Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
79
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@hirohiro77

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

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送信のフォームからの入力が出来ます。

79
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
79
Help us understand the problem. What is going on with this article?