GoogleAppsScript
ifttt
LineNotify
GoogleHome

GoogleHomeで体重を記録してLINE Notifyでトレンドグラフを送信

ざっくりストーリー

  1. GoogleHomeに「ねぇGoogle, 体重 ●●キロ」
  2. レスポンス「●●キロですね」
  3. LINE Notifyでスマホに推移グラフを表示

独自性があるとすれば、新規でグラフ作成せずに、既存グラフを画像にしてLINEに送付ですかね。

GoogleHomeからIFTTT経由でGoogleスプレッドシートへ入力

image.png
image.png
image.png

Googleスプレッドシートへの入力を検知して日時データ保管

通常のスプレッドシートと同じようにグラフを作成して、それをLINE Notifyに送る

新規グラフを毎回生成するのは手間だし、レイアウト調整が大変そうだったので、いつも通りに作ったグラフを送付したい。できるはずでしょ。ということで、

function sendGraph(){
  var mySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("data");
  var graphs = mySheet.getCharts()
  for(var i=0; i<graphs.length; i++ ){
      var pic = graphs[i].getBlob();
      sendHttpPostImage("体重トレンド",pic)
  }
}

function sendHttpPostImage(message, blob){
  var token = "[access_token]";

  var formData = {
   'message' : message,
   'imageFile': blob
  }
  var options =
   {
     "method"  : "post",
     "payload" : formData,  // message, imageFile を formData としてPost
     "headers" : {"Authorization" : "Bearer "+ token}
   };
   UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}

上手いこと出来ました。