みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
このシリーズでは初心者のノンプログラマー向けに「Google Apps Scriptを使ってゴミ出しLINE Botをつくる」をお題として連載を進めております。
前回の記事はこちら。
ゴミ出しLINE Bot用のチャネルの作成、友だち登録、そしてチャネルアクセストークンの取得など、LINE Developersコンソールでの準備をしました。
今回は、初心者向けGASでつくるゴミ出しLINE Botの本体部分のスクリプトをお伝えします。
あ、ちなみに「本体」に使われている「部品」については次回以降の記事でお伝えしますので、本記事だけでは完結しません…すみません。
では、行ってみましょう!
前回のおさらい
前回は、本格的にゴミ出しLINE Botを作成すべく、LINE Developersコンソールで以下準備を進めました。
- 「ゴミ出し通知くん」チャネルの作成
- 「ゴミ出し通知くん」の友だち登録
- 「ゴミ出し通知くん」のチャネルアクセストークンの取得
今回から、GASでスクリプトを作成していくのですが、シリーズの前半でつくった以下の「Hello Bot」のスクリプトを修正しながら作っていきます。
function postMessage() {
const url = 'https://api.line.me/v2/bot/message/push';
const token = '**********'; //「Hello」のチャネルアクセストークン
const payload = {
to: '*****', //ユーザーID
messages: [
{ type: 'text', text: 'Hello, world!' }
]
};
const params = {
method: 'post',
contentType: 'application/json',
headers: {
Authorization: 'Bearer ' + token
},
payload: JSON.stringify(payload)
};
UrlFetchApp.fetch(url, params);
}
スクリプトの内容については、以下の記事で徹底解説していますので、復習しておきましょう。
Hello Botのスクリプトからの変更点
前述の「Hello Bot」ですが、実は以下2つのポイントだけ変更すれば、「ゴミ出しLINE Bot」が完成します…!
- 3行目のtokenを「ゴミ出し通知くん」のチャネルアクセストークンに変更する
- 8行目のtextプロパティの内容を、曜日によって変わるメッセージとなるようにする
プッシュメッセージを送るという意味では同じですから、ほとんどスクリプトが同じになるんですね。
チャネルとメッセージを変更すればいいだけなんです。
基本を押さえておくって大事ですね~。
ゴミ出しLINE Botのスクリプト本体
ということで、先にゴミ出しLINE Botのスクリプト(本体)を紹介しますと、こちらになります。
function notyfyTakingOutTrash() {
const url = 'https://api.line.me/v2/bot/message/push';
const token = '**********'; //「ゴミ出し通知くん」のチャネルアクセストークン
const message = getMessageAboutTrash_(new Date());
if (!message) return;
const payload = {
to: '*****', //ユーザーID
messages: [
{ type: 'text', text: message }
]
};
const params = {
method: 'post',
contentType: 'application/json',
headers: {
Authorization: 'Bearer ' + token
},
payload: JSON.stringify(payload)
};
UrlFetchApp.fetch(url, params);
}
ちなみに、関数名も「notyfyTakingOutTrash」に変更しています。
以下解説をしていきますね。
チャネルアクセストークンを変更する
まず、3行目ですが、tokenを「ゴミ出し通知くん」のチャネルアクセストークンに変更しました。
チャネル(通り道)が変更になっているので、その許可証の役割を果たすチャネルアクセストークンも当然別のものになります。
ただ一方で、9行目のユーザーIDは、変更なしでOKです。ユーザーは同じ人ですからね。
メッセージの内容を変更する
11行目のtextプロパティの内容つまりメッセージを変更し、定数messageとしています。
その定数messageの中身は、5行目のgetMessageAboutTrash_関数で生成するという仕組みにしています。
関数というのは、処理をまとめたもので、呼び出すと決められた処理をして、何らかの値を返すようにつくることができます。
今回でいうと、曜日によって「本日は●曜日!☓☓ゴミの日ですよ~」という文字列を生成して返してくれるようにつくります。
この関数が本スクリプトのキモになるのですが、今後の記事で詳しくお伝えします。
メッセージが値なしならスクリプトを終了する
さらに、6行目ですが、曜日によって以降の処理をせず終了するようにしています。
ゴミ出しの必要がない曜日もありますもんね。
その仕組を説明しますね。
まず、getMessageAboutTrash_関数は、何らかのゴミの日であればその文字列を、そうでないときは「値なし」を表す「undefinded」を返すように作られています。
それが、定数messageに格納されます。
if文の条件式は、定数messageに!演算子が付与されてますから、定数messageの反転したものの判定になります。
今回の場合は、以下の2通りのいずれかになるわけです。
- 1文字以上の文字列はtrue → その反転はfalse
- undefinedはfalse → その反転はtrue
つまり、定数messageが「値なし」、つまりundefinedのときに、return文が実行されます。
return文は、本来「値を返す」命令として使われるのですが、それとともに実行中の関数を終了するという特性もあります。
なので、ここでreturn文が実行されると、関数notyfyTakingOutTrashが終了するというのと同様なんです。
まとめ
以上、初心者向けGASでつくるゴミ出しLINE Botの本体部分のスクリプトについてお伝えしました。
あとは、メッセージを生成するgetMessageAboutTrash_関数の中身がわかればOKということになりますね。
次回は、その部分についてお伝えしていきますよ。
どうぞお楽しみに!
連載目次:【初心者向け】GASでゴミ出しLINE Botをつくる
われわれ日本人がもっとも使っているといってもいいアプリ「LINE」。Google Apps Scriptを使うと、LINEを使ったツールをつくりこともできます。このシリーズでは、初心者向けに「ゴミ出しLINE Bot」のつくりかたをお伝えしていきます!- GASでLINEにメッセージを送るためのMessage APIの超初心者向け基礎知識
- 初心者向けLINE Developersコンソールとそれにログインする方法
- 【初心者向け】GASでゴミ出しLINE Botをつくるための「チャネル」とその作成
- 初心者向けLINE Botの友だち登録とユーザーID・アクセストークンの取得
- 初心者向けGASを使ってLINEではじめてのプッシュメッセージを送るスクリプト
- 初心者向けGASでLINEにプッシュメッセージを送るスクリプトを徹底解説
- 初心者向けGASでつくるゴミ出しLINE Bot用のチャネル作成と準備
- 初心者向けGASでつくるゴミ出しLINE Botの本体部分のスクリプト
- 【初心者向け】GASで日付から何のゴミの日かを調べる関数のつくり方 for ゴミ出しLINE Bot