Google Apps Script(GAS)を使って、外部からスプレッドシートにPOST通信でデータを書き込む方法を紹介します。
GET/POSTの両方に対応できるようにすれば、簡易データベースやWebhook受け取り口として活用することも可能です!
目次
スプレッドシートの用意
まず、以下のようなカラムを準備します:

script | name | date |
---|---|---|
text.jsx | t_yamada | 2019/08/11 |
GASでGET/POST通信を処理するコード
スプレッドシートのスクリプトエディタで以下のコードを記述します。
function doGet(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('シート1');
var sheetData = sheet.getRange('A2:C' + sheet.getLastRow()).getValues();
var responseList = [];
sheetData.map(function(d) {
responseList.push({ script: d[0], name: d[1], date: d[2] });
});
var response = {
data: responseList,
meta: { status: 'success' }
};
return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);
}
function doPost(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('シート1');
var data = JSON.parse(e.postData.contents);
// スプレッドシートに追記
sheet.appendRow([data.script, data.name, data.date]);
return ContentService.createTextOutput(JSON.stringify({
result: 'success',
data: data
})).setMimeType(ContentService.MimeType.JSON);
}
Webアプリケーションとして公開
- メニュー >「公開」>「ウェブアプリケーションとして導入」
- 「アプリケーションにアクセスできるユーザー」→「全員(匿名ユーザーを含む)」を選択
- 発行されたURLを控えておきます。

Windowsで curl を使う方法
1. curlのインストール(Windows)
MacやLinuxにはcurlが最初から入っていますが、Windowsでは手動導入が必要です。
- 以下のURLからWindows版のcurlをダウンロードします:
https://curl.haxx.se/windows/
curl-7.65.3-win64-mingw
などを選択して展開- 任意の場所(例:
C:\curl-7.65.3-win64-mingw\
)に置きます
2. 動作確認(コマンドプロンプト)
コマンドプロンプトを開き、以下のように実行:
cd C:\curl-7.65.3-win64-mingw\bin\
curl --help
無事にオプション一覧が表示されればOKです。
GET通信でスプレッドシートからデータを取得
curl -L "https://script.google.com/macros/s/xxxxxxxxxxxxxxxxxxx/exec"
スプレッドシートの内容がJSONで取得できたら成功です。

POST通信でスプレッドシートに書き込む
以下のコマンドをWindowsの cmd
で実行します(JSONの囲みはダブルクォーテーションで)
curl -X POST -H "Content-Type: application/json" -d "{\"script\":\"hoge.jsx\", \"name\":\"i_suzuki\", \"date\":\"2019/08/11\"}" -L "https://script.google.com/macros/s/xxxxxxxxxxxxxxxxxxx/exec"
MacやLinuxの場合は、シングルクォーテーションでもOK:
curl -X POST -H "Content-Type: application/json" -d '{"script":"hoge.jsx", "name":"i_suzuki", "date":"2019/08/11"}' -L "URL"
実行結果:スプレッドシートにデータが追加
コマンドを送信すると、スプレッドシートに1行追記されます。
GAS側でJSONを受け取り、表にデータを追加する動作が確認できます。

まとめ
- GASの
doPost()
で外部からのJSONデータをスプレッドシートに保存可能 curl
でのGET/POST通信のテストはとても便利- Webアプリケーション化すれば、Slackや外部ツールと連携可能に!
今後はWebhookやフォームの自動受付などにも応用していけます。
一度作っておくと、日々の自動化に大きく貢献するのでおすすめです!