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

GASのdoGetとdoPostをcurlで試してみた

More than 1 year has passed since last update.

やりたいこと

スプレッドシートでデータの出し入れを試したい!
curlでスプレッドシートからデータの取得、データの挿入をやってみる。

  • fruitとpriceの列を持つシートから、全データを引っ張ってくる
  • fruitとpriceをpostしてシートの末尾にデータを追加する

難しいことはしない(大事)

参考にさせていただいた記事

3分で API を作って世の中にデプロイするライブコーディング〜今日から君もスピードスターエンジニア〜

用意したもの

googleスプレッドシート1枚

初期データ

ss1

スクリプト

上バーの[ツール]→[スクリプト エディタ]で開く。

公開するときは、都度、[公開]→[ウェブアプリケーションとして導入]でプロジェクトバージョンを新規作成で新しくすること。(詳しくは↑の参考にさせていただいた記事へ)

SnapCrab_NoName_2018-11-24_1-11-28_No-00.png

doGet

コード

doGet
function doGet(e) {
  var ss        = SpreadsheetApp.getActiveSpreadsheet();
  var sheet     = ss.getSheetByName('シート1');
  var sheetData = sheet.getRange('A2:B' + sheet.getLastRow()).getValues();

  // データの成形
  var responseList = [];
  sheetData.map(function(d) {
    responseList.push({ fruit: d[0], price: d[1] });
  });

  // レスポンス
  var response = {
    data: responseList,
    meta: { status: 'success' }
  };
  return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);
}

実行と結果

実行
curl -L "エンドポイントURL"
結果
{
    "data":[
        {"fruit":"apple","price":150},
        {"fruit":"banana","price":100},
        {"fruit":"cheese","price":300}
    ],
    "meta":{
        "status":"success"
    }
}

doPost

コード

doPost
function doPost(e) {
  var ss       = SpreadsheetApp.getActiveSpreadsheet();
  var sheet    = ss.getSheetByName('シート1');
  var PostData = JSON.parse(e.postData.contents);

  // 行の最後に値を追加
  sheet.appendRow([PostData.fruit, PostData.price]);
}

実行と結果

実行
curl -X POST -H "Content-Type: application/json" -d '{"fruit":"pine", "price":"800" }' -L "エンドポイントURL"

ss3.png
↓こうなる
ss4.png

所感

取り出したいデータの指定とか小難しいことしないならばとても簡単で手軽!!
スピードは出ないから当然まじめなサービスには不向き。
DB設定とかの面倒を省きたいシーンで活躍してくれそう。

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
ユーザーは見つかりませんでした