知りたいこと
GASの スタンドアロンスクリプト1
で、セットしたUserPropertyを、それとは別の スタンドアロンスクリプト2
で読むことは可能なのか。
準備
スタンドアロンスクリプト1
として prop_1.gs
を作成する。
ユーザープロパティをセットする。
prop_1.gs
function setProp() {
PropertiesService.getUserProperties().setProperty('TEST_KEY', "test_key");
}
スタンドアロンスクリプト2
として prop_2.gs
を作成する。
ユーザープロパティの中を見る。
prop_2.gs
function getProp() {
var properties = PropertiesService.getUserProperties();
var data = properties.getProperties();
for (var key in data) {
Logger.log('Key: %s, Value: %s', key, data[key]);
}
}
実験
prop_1.gs
を実行してから prop_2.gs
1)先に prop_2.gs
を実行するとログには下記が表示される。
ログが見つかりません。Logger API を使用してプロジェクトにログを追加してください。
2)prop_1.gs
を実行してから prop_2.gs
を実行したときのログ
ログが見つかりません。Logger API を使用してプロジェクトにログを追加してください。
結論
GASのユーザープロパティを、別のスクリプトから読むことはできない。
...まぁそりゃそうか。いろんなところでKeyが上書きされてるかもしれいし管理しきれないもんね。
スクリプトをまたいでデータを共有したかったら、データストアとして何か(スプレッドシートとか?)を使う、と。
補足:同じスクリプト内ならできる
(あたり前感あるけど比較として)
prop_3.js
function prop() {
PropertiesService.getUserProperties().setProperty('TEST_KEY', "test_key");
var properties = PropertiesService.getUserProperties();
var data = properties.getProperties();
for (var key in data) {
Logger.log('Key: %s, Value: %s', key, data[key]);
}
}
↓ ログ出力結果
Key: TEST_KEY, Value: test_key