簡単にスプレッドシートに追記型のWebAPIを作る方法

はじめに

今回は色々と便利な、Goolgeのスプレットシートに追記していく簡単なWebAPIを構築してみたいと思います。
色んなところで使えるので、とても便利ですよ。

プログラムはこんな感じ

1.スプレットシートより、「拡張機能」>「App Script」を選択します。

2.「App Script」で以下のようにプログラムを書きます。
(以下のプログラムは、日付と引数の値を3つ追記するというプログラムになっています。)

function doPost(e) {
  const sheet = SpreadsheetApp.getActive().getSheetByName('test');
  const pt = JSON.parse(e.postData.contents);
  const dt = Utilities.formatDate(now, 'GMT', 'yyyy/MM/dd HH:mm:ss')
  sheet.appendRow([dt,pt.data1, pt.data2,pt.data3]);
}

3.「デプロイ」>「新しいデプロイ」を選択し、車輪のマークをクリックし、「ウェブアプリ」を選択します。

4.以下のとおり設定し、「デプロイ」を選択する。

項目設定値
ウェブアプリ自分
アクセスできるユーザー全員

5.結果の画面から、赤で囲んだアドレスをメモしておく。

使い方

例えばjavaであれは、こんな感じで利用できます。JSONで値を渡すだけ。
当然CURLコマンドでも出来ますので、色々とデータ取得や蓄積に活用してみてください。

var headers = {
'Content-type': 'application/json'
};
var dataString = `{"data1": "${data1}","data2": "${data2}","data3": "${data3}"}`;
var options = {
    url: 'https://script.google.com/macros/s/XXXXXXXXXX/exec',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

try {
    //throw new Error("テストでキャンセルするよ");
    request(options, callback);

}catch(err){
    console.log(err.name + ': ' + err.message);
}

まとめ

いかがだったでしょうか?
誰でも簡単にWebAPIを作れて、しかも使いやすいスプレットシートと連携できるのは便利すぎますよね。
是非、活用して面白いものも皆さん作ってみてください。

IT

Posted by スングル