業務の改善」または、「業務の効率化」を目指している方、こんにちは。

今回は、「Google Apps Script(GAS)」を使った業務の改善・効率化の事例紹介の第八弾です。

弊社は、協同組合様や運送事業者様向けにETCカードの管理・請求書・走行明細書発行システム「ETCクラウド」を提供していますが、システムだけでなく、運用業務のアウトソーシングもお受けしております

そのアウトソーシングでお受けしている運用業務の効率化、ミス削減のために行っている事例をご紹介させていただければと思います。

前回は、「簡易的なメルマガを配信する」方法をご紹介しましたが、今回は、 「Google Apps Script(GAS)」 と「LINE」の連携による「業務の改善・効率化」の事例をご紹介します。

以前、Google Apps Script(GAS)」にて LINEへメッセージを送るという方法をご紹介しましたが、あのケースは、個別ユーザー宛へのLINEでした。今回は、LINEグループへメッセージを送る方法をご紹介したいと思います。

Google Apps Script(GAS)」を使えば、LINEグループへもメッセージ送信することができます。

LINEグループへメッセージ送信を行う場合、宛先となるグループIDを取得する必要があるのですが、このグループIDは、一般ユーザが意識することがないためLINEアプリでは表示されていません。

よって、一度、GASでグループIDを取得するスクリプトを作成した後に、LINEグループへのメッセージ送信スクリプトを作成するという2段階の処理が必要となります。

まず、第1段階目のグループIDを取得する方法ですが、以下が参考になります。

LINEグループIDを取得するWebアプリをGASで作る魚拓

上記を元にして、「Google Apps Script(GAS)」からLINEを操作するための通路である「チャネル(グループID取得くん)」を作成します。

スクリプトは以下の通りです。

 // グループID取得くんのアクセストークン
var access_token = ●●●●●";

// グループID取得くんにグループIDを返信させるキーワード
var keyword = PropertiesService.getScriptProperties().getProperty("KEYWORD") || "12345";

function doPost(e) {
var contents = e.postData.contents;
var obj = JSON.parse(contents);
obj["events"].forEach(function(event) {
if (event.type == "message") {
// メッセージテキストが特定のキーワードだったらreplyを返す(それ以外での反応を抑制する)
if (event.message.text == keyword) {
var post_data = {
"replyToken": event.replyToken,
"messages": [
{
"type": "text",
"text": event.source.groupId
}
]
};
var options = {
"method": "POST",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer " + access_token
},
"payload": JSON.stringify(post_data),
"muteHttpExceptions": true
};
UrlFetchApp.fetch("https://api.line.me/v2/bot/message/reply", options);
Logger.log("LINE送信しました");
Logger.log("グループID=" + event.source.groupId);
}
}
})
}

このスクリプトをWebアプリとして公開し、「グループID取得くん」のチャネル基本設定から、メッセージ送受信設定 > Webhook送信 を「利用する」に変更、 Webhook URL にこの公開したWebアプリのURLを設定します。

グループID取得くん

グループIDを取得したいグループには、「チャネル」がメンバーとして入っている必要があるので、「グループID取得くん」をグループに参加させます。(注意: グループには「チャネル」は1つしか参加させられません)

そして「グループID取得くん」が参加しているグループで特定のキーワードを送信すると「グループID取得くん」がそのグループのグループIDを返信してくれるという仕組みです。(以下の例は、特定キーワードが12345です)

特定キーワードを送信するとグループIDを返信してくれる

グループIDが分かれば、第2段階目が、LINEのグループにGoogle Apps Scriptからメッセージを送信するための「チャネル」として(グループ通知くん)を作成し、LINEグループに「グループ通知くん」を招待して、メッセージを送信させることです。(注意:LINEグループに、グループ通知くんを追加する前に、グループID取得くんをLINEグループから退会させておく必要があります)

スクリプトは以下の通りです。

 function sendLINE(){ 

// グループID取得後、「グループID取得くん」をLINEグループから退会させ、グループ通知くんをLINEグループへ追加
var LINE_CHANNEL_ACCESS_TOKEN = '●●●●●●●●';//グループ通知くんのアクセストークン

var url = 'https://api.line.me/v2/bot/message/push';
var toID = '●●●●●●●●'; //取得したグループID→グループ(テスト)

var body = '送信テストです'; //送信メッセージ

UrlFetchApp.fetch(url, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + LINE_CHANNEL_ACCESS_TOKEN,
},
'method': 'POST',
'payload': JSON.stringify({
'to': toID,
'messages':[{
'type': 'text',
'text': body ,
}]
})
})
Logger.log("LINE送信しました");
}

スクリプトの書き方は、以下参照です。

GASでLINEのグループにメッセージを送る

実行すると、LINEアプリでは以下のように見えます。

LINEの個人ユーザーにメッセージ送信するのと比べると、LINEグループにメッセージ送信するのはいろいろと設定が面倒ですが、LINEグループへの送信スクリプトを使えば、作業の効率化の1つになるかもしれないので。参考になれば幸いです。