勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

GASとLINEを連携させて通知メッセージを送る方法のメモ

   2024/02/27  Google Apps Script Google

Google Apps ScriptとLINEを連携させ、LINEに何らかの通知メッセージを送信したい。調べたところLINE Notifyというサービスを利用することで無料かつ簡単に実装できるらしい。以下にLINE Notify側の設定方法とGAS側の実装方法をメモ。

 

LINE Notify側の作業

LINE Notify側の作業をする際にLINE用のメールアドレス及びパスワードが必要となる。

どちらもスマホからLINEを起動し「ホーム」→「右上歯車マーク」→「アカウント」から設定可能。

設定後は下記の通り作業を行う。

トークンを発行する

以下ページの右上にあるログインリンクをクリックしてログインする。

https://notify-bot.line.me/ja/

ログイン後は右上の「メニュー」→「マイページ」→「ページ下部のトークンを発行する」と進み、トークン名及びトークルームを選択する。トークン名に関しては適当で良いがメッセージ通知時に表示される。トークルームは個人用の通知システムとして使用する場合は「1:1でLINE Notifyから通知を受け取る」を選択する。

「発行する」をクリックするとトークンが発行され、ランダム英数字の文字列が表示されるのでコピーしテキストエディタ等にメモしておく。

使用制限とリファレンス

通知を送る際はLINE NotifyのAPIにリクエストする形となり、1トークン1時間辺り最大1,000回までリクエスト可能。詳細は以下リファレンスを参照。

https://notify-bot.line.me/doc/ja/

 

GAS側の作業

GASの使い方はドットインストールの以下レッスンを見ておくと何となく概要が掴める。

https://dotinstall.com/lessons/basic_google_apps_script_v2

スプレッドシートの作成

以下Googleドライブにログインし、左上「新規ボタン」→「Google スプレッドシート」からスプレッドシートを新規作成する。

https://drive.google.com/drive/u/0/

シート名は適当で良い。その後「ツール」→「スクリプトエディタ」と進み、適当なスクリプト名をつける。

APIリクエスト用のソース

デフォルトで記述されているソースは削除した上で以下を記述する。

function sendLINE() {
    //メッセージ内容。改行を入れる場合は\でエスケープする
    const messageText = 'テストです。\
    テストテスト';

    //LINEから取得したトークン
    const token = 'xxxxxxxxxxxxxxxxxx';

    //fetch用の詳細パラメータ
    const options = {
        'method' : 'post',
        'headers' : {
            'Authorization' : 'Bearer '+ token
        },
        'payload' : {
            'message' : messageText
        }
    };

    //LINE APIのURL
    let url  = 'https://notify-api.line.me/api/notify';

    //APIをリクエストして応答を受信する
    UrlFetchApp.fetch(url, options);
}

スクリプト実行

ソースを記述した後、「Shift + S」キーで上書き保存し、ページ上部の「実行」ボタンをクリックすると、初回はアクセス権限の確認の為、承認作業が必要になるので表示されている案内を見て作業を進める。特に難しいことはないがドットインストールの無料範囲内で説明されているので、作業方法が分からない場合はそちらを参照。

その後スクリプトを実行するとLINEにメッセージが通知される。

UrlFetchApp.fetch(url, options)

GAS側の関数で他サイトやAPIにアクセスし応答データを受信するといったもの。詳細は以下リファレンスを参照。

https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app

'Authorization' : 'Bearer '+ token

tokenはLINE用のトークンと分かるが、Bearerは何? となったので調べたところ、以下一文がリファレンスに記載されていた。

リクエストヘッダに Authorization: Bearer <access_token> を付与してアクセスします。

Bearerが「運ぶ人、運搬人、担う人」という意味みたいなので、「xxxxxx」というトークンで運びますよ、ということだろうか。

 

所感

思ったより簡単にGASとLINEの連携ができた。というよりもLINE側のAPIをリクエストしているだけなのでGAS以外でも簡単に実装できそう。せっかくなのでPHPでも連携させてみようと思う。

尚、GASのメリットとしてサーバを用意する必要が無く、ブラウザからちょっとしたソースを記述するだけで完成するため、簡単な個人ツールとかだと気軽に作ることができるのがメリットか。

 

参考サイト

https://note.com/skipla/n/nefdfa2abd350

 - Google Apps Script Google

  関連記事

GASで「小説家になろう」サイトの更新通知をLINEに送る方法

Google Apps Scriptの勉強として「小説家になろう」サイトの特定小 ...