obnizでGoogle スプレッドシートへ書き込めたので、LINEで通知しようと画策しました。ひとまずLINEへメッセージを送信する部分のみ。LINE側の設定とかはまた後で。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
/////////////////////////////////////////////////////////////////// // LINE Developers // ブロードキャスト // Channel Access Token const TOKEN='LINE Developer Channel Acess Token に置き換えてね' const url='https://api.line.me/v2/bot/message/broadcast' var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; function doPost(e) { var rowPos = 1; //POSTで受けた値を取得 var jsonString = e.postData.contents; sheet.getRange(rowPos,1).setValue(jsonString); rowPos=rowPos + 1; //------------------------------------------------------------- // JSONデータを連想配列にしてオブジェクトとしてセットする var jsonData = JSON.parse(jsonString); var values = Object.keys(jsonData); var jsonText = ""; // json連想配列のキーに対する文字と単位 const moji = {'temp': ['温度','[℃]'], 'hum': ['湿度', '[%]'], 'press': ['気圧','[hPa]'], 'light': ['明るさ','[lx]']}; Object.keys(jsonData).forEach( function(value) { jsonText = jsonText + moji[value][0] + ' = ' + this[value] + moji[value][1] + ', '; }, jsonData); jsonText = jsonText.substr(0, jsonText.length-2); sheet.getRange(rowPos,1).setValue(jsonText); rowPos=rowPos + 1; let LineMessageObject = [{ 'type': 'text', 'text': jsonText }]; replyLine(LineMessageObject, TOKEN); } function replyLine(LineMessageObject, replyToken) { const replyHeaders = { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + TOKEN }; const replyBody = { 'messages': LineMessageObject }; const replyOptions = { 'method': 'POST', 'headers': replyHeaders, 'payload': JSON.stringify(replyBody) }; UrlFetchApp.fetch(url, replyOptions); } |
今日は力尽きたので後で追記します。