こんな事がありました
複数のスプレッドシートに、全く同じGASを適用させたい。
スプレッドシートごとにスクリプトエディタ入れて、コードをコピーして、、、ってやりたくない。
コードを「ライブラリ」にして、各スクリプトエディタから読み込むだけにしたい。
疑問点として「スタンドアロンであるライブラリから、Spreadsheet.getActive()ってできるんだっけ?」
の調査。
結果としては「できる」
スタンドアロンスクリプトからは当然無理
/**
* ライブラリ(スタンドアロンスクリプト)の中のコード
*/
function getSsName(){
const ss = SpreadsheetApp.getActive()
console.log(ss.getName())
}
実行結果
TypeError: Cannot read properties of null (reading 'getName')
そりゃそうですよね。スタンドアロンスクリプトなんだから SpreadsheetApp.getActive() できないですよね。
ライブラリにして読み込むとスプレッドシートを取得できる
上記のスクリプトを「ライブラリ」として公開する。(公開の仕方は調べてみてください)
下記は「そんなことできるのか?」という名前のスプレッドシートにバインドされているスクリプト。上のライブラリを LIB としている
スプレッドシートにバインドされてるスクリプト
/**
* 「そんなことできるのか?」という名前のスプレッドシートにバインドしているスクリプト
*/
function myFunction() {
LIB.getSsName()
}
実行結果
そんなことできるのか?
よかった。コード管理が楽になりそう。