cURL でスプレッドシートにデータを入力する

この記事は adventar.org の23日目に寄せた記事です。

GASでHTTPを受けてスプレッドシートにデータを入力できる、という話を聞いたので試して見た、というような記事です。今回はとりあえず動かしてみて満足することがゴールです。

まず新しいスプレッドシートを作成し、「ツール」から「スクリプトエディタ」を開きます。

次に、スクリプトエディタに以下のようなコードを書きます。リクエストを受けた時刻を一行挿入し、It's works! というテキストを返します。

function doGet(e) {
  var ss = SpreadsheetApp.getActive()
  var sheet = ss.getActiveSheet();
  sheet.appendRow([new Date()]);

  var output = ContentService.createTextOutput("It's works!");
  output.setMimeType(ContentService.MimeType.TEXT);
  return output;
}

続いて、スクリプトエディタのメニューにある「公開」から「ウェブアプリケーションとして導入」を選択します。

f:id:side_tana:20181223010222p:plain

今回は権限について難しいことを考えたくないので、ひとまず全開にします。*1

公開が終わるとURLが発行されるので、cURL で叩いて見ます。

$ curl -L https://script.google.com/macros/s/AKfycbzGf_...(省略)
It's works!%

果たしてスプレッドシートを見てみるとリクエストの時刻が記録されています。

f:id:side_tana:20181223010557p:plain

ということで、めちゃくちゃ簡単にcURLでデータを挿入することができました。POSTでペイロード乗せたりもできるみたいですし、クエリパラメータで指定とかもできるのでは*2 と思います。

記事書くためにやって見たのですが、PC開いてから30分でここまで書き終わっていて本当に手軽だな〜と思います。

はまったところ

スクリプトの更新後にそれを反映するためには、再び「ウェブアプリケーションとして導入」を行う必要があり、かつその際には新しいバージョンを指定する必要があるのですが、これに気がつかず少しハマりました、、、まあきっとドキュメントをちゃんと読めばその辺りフォローされているのでしょう。

そう、今回はなんとドキュメントを読まずにやっています。そういうこともある。逆に言えばとりあえず動かすだけならドキュメンなしでもなんとなくできてしまう、、、なかなかすごいと思います。

明日は id:hitode909 さんいい話が読めるようです。楽しみですね。

*1:本格的な運用を考えるならセキュリティレベルについては考える必要があると思います、また、検証が終わったら「アプリケーションにアクセスできるユーザー」を自分の身にしておくのが良いでしょう...

*2:未確認