日記

GasでLineメッセージを送ってみる

参考にした記事

Google Apps ScriptでLINE BOTつくったら30分で動かせた件
https://qiita.com/hakshu/items/55c2584cf82718f47464

デベロッパーアカウントを作ろう

デベロッパーページでアカウント作ったり、チャネルを作ったり。

 https://developers.line.biz/ja/

ここでアカウントをつくらなきゃいけないみたい。
こーゆーのがめんどくさい。

参考記事をみながら、
プロバイダとチャネルをなんとか作成してください。
作ったbotと友達登録しましょう。

「返信内容に答えてくれる」

これをやりたければ以下の記事。

https://yuilog.xyz/linebot_gas

「一方的にメッセージを送る」

自分がやりたかったのはこちら。
両方も当然できるでしょう。最初はこっちの方が単純でいいかな。
汎用性はなくなるが、その分自分専用なメッセージを設定できますね。

Google Apps ScriptでPushメッセージのLINE Botを作る。
https://qiita.com/tetrapod117/items/0e3a9caf846ea11b688a

上記記事のコードほぼそのままで申し訳ないんですけど、以下のようになります。

//送受信トークン
var CHANNEL_ACCESS_TOKEN = 'xxxxxx';
//ID
var USER_ID = 'xxxxxx';

function pushMessage() {
  var postData = {
    "to": USER_ID,
    "messages": [{
      "type": "text",
      "text": "ちーっす",
    }]
  };

  var url = "https://api.line.me/v2/bot/message/push";
  var headers = {
    "Content-Type": "application/json",
    'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
  };

  var options = {
    "method": "post",
    "headers": headers,
    "payload": JSON.stringify(postData)
  };
  var response = UrlFetchApp.fetch(url, options);
}

トークンとIDが必要みたいですね。

ちょこっと改造して使えるプログラムにしてみる。

まず、毎朝メッセージを送るようにしてみます。

スクリプトエディタのメニューで
編集 > 現在のプロジェクトのトリガー
をクリック

こんな感じでトリガーを設定しておくと毎朝「ちーっす」って言ってくれます。
やったぜ。

曜日ごと言うことを変えてみる

これだけでもちょっとした目ざましになると思いますが、
曜日で言うことを変えてみましょう。

こんなシートを作ります。

見ての通りゴミ出しについて教えてくれるようにしてます。
当然内容は自由です。日付や、天気予報、ニュースなどもシートを工夫するだけで組み込めると思います。

//トークン
var CHANNEL_ACCESS_TOKEN = '';
//ユーザID
var USER_ID = '';
//メッセージの記載されたスプレッドシートのURLを入れます
var sheetURL = '';

function pushMessage() {
  
  //曜日を取得
  var date = new Date ();
  //月>0,火>1,水>2,木>3,金>4,土>5,日>6 (たぶん)
  var dayOfWeek = date.getDay();
  
  var Sheet = SpreadsheetApp.getActiveSheet();
  var text;
  
  //switch文のほうが多分いいけど
  if(dayOfWeek == 0){
    text = Sheet.getRange("B2").getValue();
  }else if(dayOfWeek == 1){
    text = Sheet.getRange("B3").getValue();
  }else if(dayOfWeek == 2){
    text = Sheet.getRange("B4").getValue();
  }else if(dayOfWeek == 3){
    text = Sheet.getRange("B5").getValue();
  }else if(dayOfWeek == 4){
    text = Sheet.getRange("B6").getValue();
  }else if(dayOfWeek == 5){
    text = Sheet.getRange("B7").getValue();
  }else if(dayOfWeek == 6){
    text = Sheet.getRange("B8").getValue();
  }
  
  Logger.log(dayOfWeek + text );
 
  var postData = {
    "to": USER_ID,
    "messages": [{
      "type": "text",
      "text": text + "\n" + sheetURL,
    }]
  };

  var url = "https://api.line.me/v2/bot/message/push";
  var headers = {
    "Content-Type": "application/json",
    'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
  };

  var options = {
    "method": "post",
    "headers": headers,
    "payload": JSON.stringify(postData)
  };
  var response = UrlFetchApp.fetch(url, options);
}

if文の部分があまりスマートではないですけど、大目にみてください。

スプレッドシートのURLを入れてますが、これはメッセージがおかしいな?変えたいな?と思った時のため、すぐ編集できるようにリンクを入れています。

これはゴミ出しですけど
好きなテレビ番組の放送時間とか
繰り返しではないけど、忘れちゃいけない予定とか
ちょこちょこ編集できていいんじゃないかと思います。

ちょっと運用して、何か面白いことを思いついたらまた反映してみたいと思います。

その他参考にした記事

https://inside.dmm.com/entry/2017/12/19-dmmlabotech-adventcalender-_GAS

LINEのBot開発 超入門(前編) ゼロから応答ができるまで 
https://qiita.com/nkjm/items/38808bbc97d6927837cd

こちらの記事もおすすめ!