はじめに
あるスプレッドシートで作成したGASプログラムを別のスプレッドシートで実行する方法を紹介します。
具体的には「スプレッドシートA」のスクリプトから「スプレッドシートB」のスクリプトを実行するイメージになります。
実行される側プログラムの作成
スプレッドシートの作成
ご自身のGoogle Driveにアクセスをして新規作成からスプレッドシートを作成します。
「新規」か「右クリック」でメニューを出し、「Googleスプレッドシート」をクリックしてください。
スプレッドシートの名称をわかりやすくしておきます。
スクリプトの作成
スプレッドシートを作成したらスクリプトエディタを起動します。
上部のメニューから「ツール」をクリックし「スクリプトエディタ」をクリックしてください。
function appendRowData(Data){
let SH = SpreadsheetApp.getActiveSheet();
SH.appendRow(Data);
}
function deleteLastRow(){
let SH = SpreadsheetApp.getActiveSheet();
SH.deleteRow(Data);
}
上記のコードをコピペしてください。こちらのコード自体は、スプレッドシートにデータを追加する関数と、一番下の行を削除する関数になります。
テストとしてこの関数を作成しておりますので、運用する際には自由に作り替えてください。
スクリプトIDの取得
スクリプトの保存が完了したら左側メニューの「歯車」をクリックしてください。
表示されるものの中から「ID」という項目を探し、「コピー」ボタンを押して、スクリプトIDをコピーしてください。
実行する側のプログラムの作成
スプレッドシートの作成
先ほどと同様に、ご自身のGoogle Driveにアクセスをして新規作成からスプレッドシートを作成します。
「新規」か「右クリック」でメニューを出し、「Googleスプレッドシート」をクリックしてください。
スプレッドシートの名称をわかりやすくしておきます。
スクリプトのインポート
上部のメニューから「ツール」をクリックし「スクリプトエディタ」をクリックしてください。
左側のメニューから「ライブラリ +」をクリックしてください。
スクリプトIDを入力するボックスに、先ほどコピーしたスクリプトIDをペーストしてください。
続いて「検索」をクリックしてください。
「バージョン」と「ID」という項目が追加されます。
バージョンとは、スクリプトのデプロイバージョンになります。今回の場合は、デプロイを行っていないため、最新の状態が有効となる「HEAD」が選択されます。
ID自体は、プログラムを呼び出す際の識別子のようなものです。次で説明をします。
設定が完了したら「追加」ボタンをクリックしてください。
スクリプトの作成・実行
スクリプトエディタのコード入力部分に先ほど設定したIDを入力してください。
今回の場合は「B」をIDとしたため、それを入力すると、使用可能な関数がサジェストされます。
function myFunction(){
B.appendRowData(["test1","test2"]);
B.appendRowData(["test3","test4"]);
B.deleteLastRow(Data);
}
上記のコードをコピペしてください。ここでのポイントは「先ほど指定したID.関数」で別のスプレッドシートで作成した関数を実行できるという点です。
こちらを実行してください。Google Apps Script を実行した際に承認を求められますので、こちらを参照して許可をしてください。
承認はどこで求められる? Google Apps Script をスクリプトエディタでコーディングし、実行する際に求められます。 Google Apps Script のみで完結する処理では承認は求められませんが、スプレッドシートや[…]
実行結果の確認
実行する側のスプレッドシートを確認すると、実行した結果出力されています。
ここで、B(実行される側)のシートに実行結果を出力をしたい場合は、B(実行される側)のプログラムを次のように変更します。
function appendRowData(Data){
let SH = SpreadsheetApp.openById("ID").getActiveSheet();
SH.appendRow(Data);
}
function deleteLastRow(){
let SH = SpreadsheetApp.openById("ID").getActiveSheet();
SH.deleteRow(Data);
}
ポイントは getActiveSheet() を使用していない点です。スプレッドシートを指定せずに Active系 のメソッドを用いると、プログラムを実行した側のスプレッドシートを取得してきます。
この特性から、今回のプログラムでは、A(実行する側)のスプレッドシートの結果が出力されました。
上記のコードに変更して B(実行される側)のスプレッドシートを確認します。
実行結果が出力されていれば成功です。
今回紹介したコード以外について
Googleが用意していくれている公式リファレンスを参考にしました。とてもわかりやすいものになっています。
Develop high-quality, cloud-based solutions with ease.…
全編が英語である点や、オブジェクト指向の理解が浅い状態では、うまく利用することが難しいです。
本ブログでは、今後もGoogle Apps Scriptのリファレンスの解説や、学び方・ツール作成について発信していきます。
ご興味ある方はお気に入り登録などお願いします。