LoginSignup
16

More than 5 years have passed since last update.

Google Spreadsheetsに内容を追記するshell script + Google apps scripts

Last updated at Posted at 2015-11-04

大したタイトルなんだが、なんてことはない、Google Apps ScriptだけでSpreadSheetへのPOST APIを持つWebアプリケーションを公開するの通りのGoogle apps script(以下GAS)を用意し、ターゲットとなるspread sheetsに設定、あとはそのスクリプトめがけてPOSTメソッドでクエリー与えて叩くだけです。

ただ、すこしGASスクリプトは改変してある

function doPost(e) { 
  var ss = SpreadsheetApp.openById("###_API_TOKEN_###");
  var sheet = ss.getSheetByName("シート名");

  //formデータを取り出して、配列に格納
  var array = [e.parameters.timestamp[0],e.parameters.hostname[0],e.parameters.plan[0],e.parameters.uri[0]];

  //一発で最終行に書込みする
  sheet.appendRow(array);
}

なんかe.parametersには来てるんだけど、、謎の配列だったので、.queryname[0]で取ってしまってる。クエリー名は任意に決めておきましょう。arrayにこうやって連結した配列分のセルが出来る。↑の例だと4カラム分。

sheet.appendRow()でアペンドしてる。内容が存在する行の次に追加してくれるので、内容を上書きしたりもしない。また背景色とかは無視されるので、列ごとの色分けも先にしておける。

nowdata='現在時刻'
hostname='ホスト名'
plan='プラン'

curl -F "timestamp=${nowdate}" -F "hostname=${hostname}" -F "plan=${plan}" -F "uri=https://${hostname}/${dirname}/" https://script.google.com/macros/s/###_API_TOKEN_####/exec > /dev/null
echo ">> Added for Google spreadsheet"
  1. ###_API_TOKEN_###は自分のに変えること
  2. 参照したqiitaの記事ではcurl -Lだったが、全部curl -Fじゃないとだめだった(CentOS6, bash環境)
  3. curlの出力を > /dev/nullに投げないと都合が悪い
  4. 最後のechoはあってもなくてもいい

ちなみに、概ね10秒ぐらいかかる。httpsへのPOSTなので概ね安全なはずだが、どうだろう?

こうやって、アカウント作成時とかに勝手に追加されていくと、管理が楽です。

スクリーンショット 2015-11-05 2.19.png

ちなみに見出しをつけてるけど、無くても上のGASのarray[]に突っ込んだ順列通りに出てきます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16