Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

hirohiro77
インフラ屋さんやってます。構成の設計とか、仮想サーバのお守とか、システムのマイナーアップデートとか、監視など。また、このサイトにおける掲載内容はあくまで私自身の見解であり、必ずしも私の所属団体・企業における立場、戦略、意見を代表するものではありません。
opt
"INNOVATION AGENCY" を標榜するインターネット広告代理店。エンジニア組織 "Opt Techonologies" を中心にアドテクetc...に取り組んでいます。
https://opt-technologies.jp/
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした