Google Apps Script から LINE に通知を送る
Google Apps Script(GAS)からリアルタイムな通知を送る方法としてLINEにメッセージを送ってみる。
LINE Notify を使うとアクセストークンを取得すれば、REST APIで簡単にメッセージを送れるので、これを使うことにした。
[超簡単]LINE notify を使ってみる を参考に、 LINEの設定 および LINE Notifyのアクセストークンの取得を行っておいてください。
[!NOTE] トークルームでなく、『1:1でLINE Notifyから通知を受け取る』を選択した場合は、ID検索で「@linenotify」を検索して友だちに追加してください。
[!NOTE] LINE Notifyホーム
ドキュメント
まずはGoogleドライブ で新しいGoogle Apps Scriptのプロジェクトを作成します。
次に、作成したspreadsheetにGoogle Apps Script(GAS)を追加します。
// アクセストークン
const ACCESS_TOKEN = '«取得したアクセストークン»';
/**
* テスト用関数
*/
function myFunction() {
// 時刻文字列取得
var date_str = Utilities.formatDate(new Date(),"JST", "yyyy/MM/dd hh:mm:ss");
var token = ACCESS_TOKEN;
LINE_notify(token, date_str + " てすとぉぉぉ" );
}
/**
* メッセージ送信処理
*
* @param {string} token - アクセストークン
* @param {string} message - 送信するメッセージ
*/
function LINE_notify(token, message){
const url = 'https://notify-api.line.me/api/notify';
var headers = {
'Authorization': 'Bearer ' + token
};
var options = {
'headers' : headers ,
'method' : 'post' ,
// encodeURIComponent()はなくても大丈夫っぽい...
// 'payload' : 'message=' + encodeURIComponent(message)
'payload' : 'message=' + message,
'muteHttpExceptions': true // エラーが返ってきても例外発生させない
};
var output;
try {
// メッセージを送信
var res = UrlFetchApp.fetch(url ,options);
var resCode = res.getResponseCode(); // HTTP レスポンスステータスコード
var resBody = JSON.parse(res.getContentText()); // レスポンス本体はJSONなのでパースする
if (resCode === 200) {
// レスポンスが200 → 正常終了
Logger.log("SUCCESS: %s", resBody.message);
} else {
// それ以外→エラーレスポンス
Logger.log(Utilities.formatString("ERROR: status:%d body:%s", resCode, resBody.message));
}
} catch(e) {
// その他のエラー(DNSエラー、タイムアウトなど)は例外が発生する
Logger.log("ERROR: " + e);
}
}
myFunction
を選択(エディタの上、「実行ログ」の左の▼をクリックして選ぶ)
ー 「実行」をクリックこれだけだと大したことできないけど、ライブラリ化して他のサービスと組み合わせて使えばなんかのPUSH通知っぽく使えるかな?
[!NOTE] Spreadsheetの時のように、ウェブアプリにしようかと思ったら、もともとREST APIだから全然意味ないので関数作るだけにしておいた。
(POST使えない場合にGETで受け付けるラッパみたいなのは考えられなくはないけど)
通知回数の上限は1000回/1時間/アクセストークンです。(そんなに送ったら鬱陶しいでしょうから問題ないかな?)