勉強したことのメモ

webプログラマが勉強したことのメモ。

GASとLINEを連携させて通知を送る

   

Google Apps ScriptとLINEを連携させ、LINEに何らかの通知メッセージを送信したい。以下に方法をメモ。

 

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

  関連記事

reCAPTCHA v2でAjaxは使わずにチェック状況を確認する方法

reCAPTCHA v2を実装する案件があり以前の記事を参考に組み込んでみたもの ...

GoogleMapAPIで現在地を更新する方法

GoogleMapAPIを使って現在地を取得してその場所にマーカーを設置、その後 ...

GoogleMapAPIでヒートマップを表示する方法

GoogleMapAPIで花粉状況や雨量を可視化しやすいようなヒートマップ的なも ...

Google map APIでマーカー(アイコン)を好きな画像に変える

Googleマップでユーザーにマーカー画像をアップロードさせて、それをマップ表示 ...

GASの実行時間計測と各種制限について

PHP等でプログラムを組んでいると、あまり実行時間について気にすることはなかった ...

GASとGmailを連携させて受信メール検索及びメール送信

Google Apps ScriptとGmailを連携させてみたい。「未読かつ特 ...

GoogleMapで半径●メートルを範囲表示

GoogleMapでマーカーを立てて、そこから範囲●mもしくは●kmを円で表示さ ...

GASを使ってみて感じたメリットとデメリット

Google Apps Scriptを色々勉強した中で感じたメリットとデメリット ...

GoogleスプレッドシートとPHPの連携

GoogleスプレッドシートとPHPプログラムを連携させたいという案件をたまに見 ...

GASで特定サイトにログインした後にスクレイピングを行う方法

Google Apps Scriptの勉強として特定サイトにログインし、その後に ...