LoginSignup
80
86

More than 5 years have passed since last update.

GASでGetパラメータを受け取ってスプレッドシートに書き込む方法

Last updated at Posted at 2016-03-16

GASで、Getを使ったスプレッドシートへの入力方法についての覚え書き
REST APIとかも作れると思うけど、動作速度に難があるのでちょっとしたモノにしか使えないかも

まず、スプレッドシートを作ります
イメージ190.png

例によって、名前は適当に決めてください。また、[ツール]から[スクリプト エディタ]を起こします
イメージ192.png

プロジェクト名とソース名は適当につけましょう
イメージ193.png

今回は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);

  }
}

入力して保存したら、[公開]から[ウェブアプリケーションとして導入...]を選びます

イメージ195.png

解説と実行ユーザと公開範囲は必須なので入れましょう、また範囲は誰がアクセスできるか決められるので注意しましょう

イメージ196.png

[導入]ボタンを押すとURLが出来ます

イメージ197.png

実際に動かす場合は

# こんな感じの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パラメータをつけて、ブラウザのアドレスバーに投げ込むと

初回だけ許可の問い合わせが出るので許可しましょう
イメージ198.png

成功すると、ブラウザには
イメージ200.png
が返ります

スプレッドシートには以下のように入ります
イメージ201.png
なお、appendRowで追記していますので複数回実行すると
イメージ202.png
のように追加されます。

いろいろ応用の利く基本的な使い方なので、覚えておくといいかもしれません。
なお、先頭のdoGet(e)をdoPost(e)にするとpost送信のフォームからの入力が出来ます。

80
86
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
80
86