山pの楽しいお勉強生活

勉強の成果を垂れ流していきます

JSONをPOSTしてGoogle SpreadSheetに書き込む

はじめに

  • GAS(Google Apps Script)でPOSTを受け付けて、SpreadSheetに書き込む手順です。
  • 認証はありませんので、URLがわかれば誰でもPOSTできてしまうので注意。
  • GroovyからSpreadSheetに書き込みたかったが、GData APIを使用するためのライブラリである、gdata-java-clientをGrapeで入れようとしたら、うまく入らなかったのでやめたという経緯があったりします。

仕様

{
  "id":"abcdef",
  "user":{
    "name":"tarou",
    "age":20,
    "email":"example@example.com",
    "result":true
  }
}

手順

  • スプレッドシートを作成
    • 適当にヘッダとか作っときます。
  • ツール → スクリプトエディタ
  • GASのコードを書く。
    • doPostはPOST、doGetはGETの時に呼ばれます。
    • 今回はPOSTで作成。
function doPost(e) {
  var jsonString = e.postData.getDataAsString();
  var data = JSON.parse(jsonString);

  var id = data.id;
  var name = data.user.name;
  var age = data.user.age;
  var email = data.user.email;
  var result = data.user.result;

  // シート取得
  var ss = SpreadsheetApp.openById(SpreadsheetApp.getActiveSpreadsheet().getId());
  var sheet = ss.getSheetByName("シート1");
  
  // データ入力
  sheet.appendRow([id, name, age, email, result]);
}
  • 保存
  • 公開 → ウェブアプリケーションとして公開
  • プロジェクトバージョン
    • 新規作成
    • コミットコメント
  • 次のユーザとしてアプリケーションを実行
    • 自分
  • アプリケーションにアクセスできるユーザー
    • 全員(匿名ユーザーを含む)
    • ↑に設定することで認証が行われない。
  • 「承認が必要です」というダイアログが表示される。
    • 許可を確認 → 許可
  • 「現在のウェブアプリケーションのURL」をメモ。
  • POST(URLは↑で確認したURLに置換してください。)
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"id":"abcdef","user":{"name":"tarou","age":20,"email":"example@example.com","result":true}}' https://script.google.com/macros/s/xxxxxxxxx/exec
  • 確認 f:id:yamap_55:20170509025238p:plain

参考