【個人的備忘録】GASでGoogle Spread Sheet の値を読み取ってLINE Botに送った話


やったこと

・LINE Bot宛に特定のメッセージを送ることで,Google Drive 上のSpread Sheetのセルの値を読み取り,それをメッセージとして返すという流れをGoogle Apps Scriptで実現した.

使い方

① Google DriveでGASのスクリプトファイルを作成する.

②以下のスクリプトをコピペ.LINE Messaging APIのアクセストークンとスプレッドシートのURLを入力する.


// LINE Messaging APIのアクセストークン 
var ACCESS_TOKEN = 'hogehoge' 

// ユーザがメッセージ送信したときに動く関数
function doPost(e){
    var replyToken = JSON.parse(e.postData.contents).events[0].replyToken; 
    var userMessage = JSON.parse(e.postData.contents).events[0].message.text; 
    var url = 'https://api.line.me/v2/bot/message/reply'; 
    var headers = { 
      'Content-Type': 'application/json; charset=UTF-8' ,
      'Authorization': 'Bearer ' +ACCESS_TOKEN 
    };

    // Google Spread Sheetを開き,読み込む
    var sheet = SpreadsheetApp.openByUrl("https://hugahuga");
    var val = sheet.getRange("A1").getValue();

    var reply = null;

    if(userMessage === 'A1の値を教えて!'){
     reply = "A1の値は" + val + "です.";
    }else{
     reply='A1の値を教えて!と言うことでA1の値を返します.';
    }

     //送信内容
    var payload = JSON.stringify({
      'replyToken': replyToken ,
      'messages': [{   
         'type': 'text' ,
         'text': reply
        }] 
      } ) 

    var options = { 
      'headers' : headers ,
      'method' : 'post' ,
      'payload' : payload }; 

    // メッセージを応答 
    UrlFetchApp.fetch(url ,options)
}

③ 公開→ウェブアプリケーションとして導入と進んで,
Project version:New
Execute the app as:Me
Who has access to the app:Anyone
と設定して「更新」を選択.Webアプリとしてデプロイされる.

④表示されるURLをWebhookURLとしてLINE Messaging APIに登録する.

上のスクリプトでは,セルのA1の値を読み取っている.
LINEで「A1の値を教えて!」と送信すると,A1の値が返ってくる.

以上.