【生成AI×GAS】違うスプレッドシートファイルに値をコピーする〔スプレッドシートID〕
オレンジピーチのトシです。
前回は、シートを越えて、値をコピーする方法を紹介しました。
しかし、前回紹介したものは、シートは違えど、スプレッドシートのファイルとしては同じものでした。
今回は、別ファイルのスプレッドシートにコピーする方法を、生成AIを利用して作っていきます。
生成AIを利用して、GAS(Google Apps Script)を作成し、スプレッドシートを操作する方法を紹介しています。
完成イメージ:やりたいこと
今回、実施したいことは、下の図のようなに、「スプレッドシート①の『転記元』というシート」から、「スプレッドシート②の『転記先』というシート」に値をコピーする。
コピーするのは、「転記元のA2~D2」セルの値を、「転記先のA8~D8」セルにコピーすることとする。
(前回までの note と比べると、指示が複雑になって来ています。
なるべく分かりやすい説明をしたいと思いますので、ゆっくり読み進めてください。)
生成AIを使ってGASを作り、実行する。
今回も、生成AIとして、Microsoft Bing Copilot を利用しました。
生成AIに、次の指示を出しました。
今回は、生成AI(Bing Copilot)に次のような指示を出しました。
過去の記事で題材とした内容と比べると、少し複雑になって来ています。
後ほど、指示(プロンプト)についても解説したいと思います。
生成AIからの回答が届く。
生成された回答がこちらです。
「スプレッドシートファイルのIDの取得」が今回のポイントです。
コードの部分がこちらです。
(今回は、GASのエディタにそのままコピペしてもエラーになります。
必要な修正点を、このあと説明します。)
function transferToAnotherFile() {
const sourceFileId = '転記元ファイルのID'; // 転記元ファイルのIDを入力
const sourceSheetName = '転記元'; // 転記元シート名を入力
const targetFileId = '転記先ファイルのID'; // 転記先ファイルのIDを入力
const targetSheetName = '転記先'; // 転記先シート名を入力
const sourceSpreadsheet = SpreadsheetApp.openById(sourceFileId);
const sourceSheet = sourceSpreadsheet.getSheetByName(sourceSheetName);
const targetSpreadsheet = SpreadsheetApp.openById(targetFileId);
const targetSheet = targetSpreadsheet.getSheetByName(targetSheetName);
const sourceRange = sourceSheet.getRange('A2:D2'); // 転記元の範囲
const targetRange = targetSheet.getRange('A8:D8'); // 転記先の範囲
const valuesToTransfer = sourceRange.getValues();
targetRange.setValues(valuesToTransfer);
}
そのほかの内容は、これまでと同じようなものですね。
GASの内容を解説
スプレッドシートのIDとは
前述のように、今回のポイントは「スプレッドシートファイルのIDの取得」です。
スプレッドシートはファイルを一意に表す、「スプレッドシートID」というものを持っています。スプレッドシートのアドレス(URL)の中に、IDが含まれています。
URLの中で、「spreadsheets/d/ の後ろ、/editの前まで」の英数字記号が、スプレッドシートIDになります。
「スプレッドシート①」、「スプレッドシート②」のそれぞれのスプレッドシートIDを、GASに組み込むことで、対象のファイルを特定します。
詳しく知りたい人は、公式サイトもご覧ください。
その他の部分のコード解説
宣言文: const
今回のコードでは、定数の宣言文である「const」が使われています。
これまでの記事で紹介した「var」「let」と同じように変数を宣言するために使用されます。
特に、const は、一度宣言すると、値を更新することが出来ないため、「定数」と呼ばれます。
短いコードの場合は、さほど気になりませんが、長いコードを書くときには、誤って変数を上書きしてしまうといったミスが発生します。
そのようなミスを防ぐためにも、プログラムの中で変更しない変数は、constを用いて定数とすると良いです。
openById() :スプレッドシートをIDで開く
スプレッドシートをIDで開くためのメソッドです。
(英単語の並びで、なんとなくイメージつきますね)
変更する可能性がある "文字列" を前もって定数に入れる。
今回のコードでは、最初の4行で、ファイル名2つと、シート名2つを定数として宣言しています。
このように書くことで、「ファイルID」や「シート名」が変わったときに、この箇所だけを修正することで、対応することが出来ます。
(スクリプトを他に使いまわす際にも、使い勝手が良いので、このようなコツも少しづづ覚えていくと、コードを書く幅が広がると思います。)
GASを実行してみる。
実際に、GASを動かしてみます。はじめてGASを実行する際には、「権限の承認」などが問われます。
より詳細な内容は、過去の記事で紹介していますので、はじめての人はこちらも読んで見てください。
GASを実行すると、狙い通り、ファイル「スプレッドシート②」のシート「転記先」のA8セル以降に、値をコピーすることが出来ました。
まとめ
今回は、別ファイルのスプレッドシートにコピーする方法を、生成AIを利用して作成しました。
ここで、改めて、生成AIに出した指示文を見て頂きたいです。
この指示(プロンプト)の中には、今回のGASコードを書くのに必要な要素を盛り込んでいます。
必要な要素が足りないと、生成AIが勝手に不足を補うため、意図しないコードになる場合もあります。
生成AIを上手に活用するためにも、GASの仕組みについて興味を持って頂けるとHappyです!
最後まで読んで頂き、ありがとうございます。
この記事が少しでもお役に立てたのなら、サポートいただけると嬉しいです。頂いたご支援は、今後の活動費やコンテンツの質向上に使わせていただきます。