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

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

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設定とかの面倒を省きたいシーンで活躍してくれそう。

26
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

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
26
Help us understand the problem. What is going on with this article?