見出し画像

前回作成したGASの解説

オレンジピーチのトシです。
前回の記事で、生成AIを用いてGASを作成した内容をご紹介しました。
今回は、そこで作成されたGASのコードを詳しく解説していきます。
(前回の記事はこちらから)

 生成AIが書いてくれたGASですが、どのような中身なのかを理解することで、今後、より的確な指示(プロンプト)を出せたり、間違いを修正出来たりするようになると思います。
 GAS初心者の方も、生成AIの力を借りて、少しづつ理解が深まればHappyです!

前回のおさらい

前回記事で作成したGASがこちらです。

function copyValue() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('転記');
  var value = sheet.getRange('C2').getValue();
  sheet.getRange('C8').setValue(value);
}

AIが書いたコードを、AIが解説する。

さっそく、はじめます。まずは生成AIに解説を指示します。

生成AIに聞いてみた。

 今回も、Microsoft Bing Copilot を使用しました。
(私自身は、これまでは、Google のGemini を使うことが多かったのですが、最近は、なんとなく、Bing Copilot を使用する機会が増えているように感じます。)

 作成したコードも短いので、全コードを貼り付けて、説明をしてもらうように指示を出しました。

生成AIにコードの内容を質問する

生成AIからの回答を読む。

 すぐに回答が返ってきました。生成AIってホントにすごいと思う。

生成AIからの回答

 もっと詳しく知りたいときは、質問を重ねると、より深く回答を返してくれます。
 今回の記事はこれで終了~としても良いのですが、noteに記事を書き始めてから、生成AIに頼りきりだな⤵と感じるので、少し続きを書こうと思います。
 お付き合いいただける方は、読み進めていってください。

AIが書いたコードを、人間が解説する。

作成したコードを再掲します。1行づつ解説していきますね。

function copyValue() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('転記');
  var value = sheet.getRange('C2').getValue();
  sheet.getRange('C8').setValue(value);
}

プログラム上から順に実行される

 GASに限らず、一般的なプログラム全般に共通して、スクリプトを実行すると、基本的には上から順に1つずつ命令が実行されます。
 書かれている命令によって、条件分岐したり、繰り返したり、スキップしたりすることもありますが、原則は、上から順番に実行されると思ってください。
 今回のスクリプトも上から順に、実行されていきます。

function とは

function copyValue() {

GASの1行目

 1行目に書かれている内容は、関数の定義づけです。
関数とは、GASによる一連の処理をひとまとめにしたものです。
実際に、スクリプトを実行する場合は、関数名を用いて呼び出して、そのスクリプトを実行します。
 また、5行目の「 }」は、1行目の「 { 」に対応しています。
つまり、スクリプト全体が、1つの関数ということです。

 関数は、function と関数名で定義します。

function 関数名() {
 実際のスクリプト
}

関数を書く際の構文

 はじめてGASを開いた際には、関数名は myFunction となっています。
関数名は、その処理を一言で表すような名前に変更するのが分かりやすいです。
今回は、『値をコピーする』操作を指示したので、生成AIが「copyValue」という名前を付けています。(指示通りで分かりやすいですね。)

スプレッドシートのシートを指定

 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('転記');

GASの2行目

 2行目に書かれている内容は、スプレッドシートのシートを変数に指定しています。
「=」イコールの前後で分けて説明します。
まず左辺。
  var : 変数を使うための宣言文です。
  sheet : 指定した変数です。
つまり、「sheetという変数を用意しました」というのが左辺の内容です。

次に、右辺。
右辺は、3つの内容を持っています。(クラスやメソッドと呼ばれますが、細かいことは割愛します)
  SpreadsheetApp : スプレッドシートというアプリを指定
  getActiveSpreadsheet() : 現在アクティブなスプレッドシートを取得
  getSheetByName("転記") : "転記"という名のシートを取得
つまり、現在開いているスプレッドシートの、"転記”というシートを取得するという内容です。

よって、「現在開いているスプレッドシートの、"転記”というシートを取得」して、今後、「sheet」という名前で呼びます。という意味になります。

スプレッドシートのクラス

文末の「;」について

前述したように、GASでは上から1行ずつ命令が実行されます。
その区切りの合図として、1行終わるごとにセミコロン(;)を記載します。(忘れても動くときもありますが、思わぬ挙動を示すときもあるので、忘れずに記載しましょう)

C2セルの値を取得する

 var value = sheet.getRange('C2').getValue();

GASの3行目

 3行目に書かれている内容は、'C2'の値を取得し変数に指定しています。
こちらも、「=」イコールの前後で分けて説明します。
まず左辺。
  var : 変数を使うための宣言文です。
  value : 指定した変数です。
つまり、「valueという変数を用意しました」というのが左辺の内容です。

次に、右辺。
右辺は、3つの内容を持っています。
  sheet : 先ほど、指定した変数のsheetです。
  getRange('C2') : sheetで指定したシートの'C2'の「範囲」を取得
  getValue() : 指定した範囲の「値」を取得
  ;  : 1行の終わりである目印

つまり、現在開いているスプレッドシートの、"転記”というシートの、'C2'セルの範囲の、値を取得するという内容です。

よって、「sheet」の"C2"の範囲の、値を取得するして、今後、「value」という名前で呼びます。いう意味になります。

getRangeで「範囲」を取得して、getValue()で「値」を取得してと、まわりくどいな~と感じる人もいると思います。
 しかし、スプレッドシートのセルの中には、数字や文字などの「値」の情報の他に、フォントや背景色などの様々な情報があります。
そのため、Range(範囲)を指定して、次にValue(値)を取得するといった書き方になります。
(フォントだけ取り出す、背景色だけ取り出すといった操作もできます)

C8セルに値を入力する

 sheet.getRange('C8').setValue(value);

GASの4行目

 4行目に書かれている内容は、'C8'の範囲を取得し変数'value'の値を入力すという意味です。
3つに分けて説明します。
  sheet : 指定した変数のsheetです。
       このように何度も使う内容は、変数にして利用します。
  getRange('C8') : sheetで指定したシートの'C8'の「範囲」を取得
          (getRangeメソッドは、先ほども使いましたね。)
  setValue(value) : 指定した範囲に「値」として'value'を入力
  ;  : 1行の終わりである目印

つまり、'C8'のセルにvalueの値を入力するという意味になります。

これらの命令が順に働くことで、C2セルの内容が、C8セルに入力される訳です。

まとめ

 今回は、前回作成したGASのコードの内容を解説しました。
長くなりましたが、一つ一つ分解していくと、GASの中身が理解できたのではないかと思います。
 同じ操作を行う(C2セルからC8セルにコピーする)GASの記載方法は、他にいくつもの方法がありますので、生成AIから違うコードが示されるかも知れません。
 そのようなときにも、生成AIを利用して、GASの内容を説明してもらうと、みなさんの学びにつながるのではないかと思います。

最後まで、読んで頂いてありがとうございました。

この記事が少しでもお役に立てたのなら、サポートいただけると嬉しいです。頂いたご支援は、今後の活動費やコンテンツの質向上に使わせていただきます。