GASで、Getを使ったスプレッドシートへの入力方法についての覚え書き
REST APIとかも作れると思うけど、動作速度に難があるのでちょっとしたモノにしか使えないかも
例によって、名前は適当に決めてください。また、[ツール]から[スクリプト エディタ]を起こします
今回はdoGet(e)を使います。これはwebからパラメータを渡された場合
/exec?name=hoge
とパラメータを渡すと
e.parameter.name
にhogeが入ります
今回の入力コードは以下になります。
スプレッドシートのIDはスプレッドシートのURLからコピーしておきましょう
web-doGet.gs
function doGet(e) {
//doPost(e)にするとformからのpostデータを書き込むことが出来る
//応用すれば、スプレッドシートをRestAPIもどきにしたり、フォームのDBにしたり、いろいろ出来ると思う
//別名で使いたい場合の例
//var name = e.parameter.p1;
//var mail = e.parameter.p2;
//JSONオブジェクト格納用の入れ物
var rowData = {};
if (e.parameter == undefined) {
//パラメータ不良の場合はundefinedで返す
var getvalue = "undefined"
//エラーはJSONで返すつもりなので
rowData.value = getvalue;
var result = JSON.stringify(rowData);
return ContentService.createTextOutput(result);
}else{
//書込先スプレッドシートのIDを入力
var id = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
//スプレッドシート名指定 "シート1"
var sheet = SpreadsheetApp.openById(id).getSheetByName("シート1");
//Getした値を配列にする
//https://xxxxxxxxx/exec?p1=AAA&p2=BBB&p3=CCC&p4=DDDD
//こんな感じなのを以下のように配列してappendRowで追記する
var array = [ e.parameter.p1 , e.parameter.p2 , e.parameter.p3 , e.parameter.p4 ];
//シートに配列を書き込み
sheet.appendRow(array);
//書き込み終わったらOKを返す
var getvalue = "ok"
//エラーはJSONで返すつもりなので
rowData.value = getvalue;
var result = JSON.stringify(rowData);
return ContentService.createTextOutput(result);
}
}
入力して保存したら、[公開]から[ウェブアプリケーションとして導入...]を選びます
解説と実行ユーザと公開範囲は必須なので入れましょう、また範囲は誰がアクセスできるか決められるので注意しましょう
[導入]ボタンを押すとURLが出来ます
実際に動かす場合は
# こんな感じのURLが表示されたはずなので
https://script.google.com/macros/s/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/exec
# execの後に
https://script.google.com/macros/s/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/exec?p1=AAA&p2=BBB&p3=CCC&p4=DDDD
# というようにgetパラメータをつけて、ブラウザのアドレスバーに投げ込むと
スプレッドシートには以下のように入ります
なお、appendRowで追記していますので複数回実行すると
のように追加されます。
いろいろ応用の利く基本的な使い方なので、覚えておくといいかもしれません。
なお、先頭のdoGet(e)をdoPost(e)にするとpost送信のフォームからの入力が出来ます。