【GAS入門】LINEで通知を管理!スプレッドシート活用法
GASでLINE通知を送る基本
まずは、Google Apps Script (GAS)を使ってLINE通知を送る基本的な方法を確認していきます。
準備するもの
これから始めるには、次のものが必要です。
1. Googleスプレッドシート
2. LINEのDeveloperアカウント
3. 通信を管理するGASスクリプト
LINE Notifyのトークンを取得
まずは、LINEのDeveloperアカウントにログインし、トークンを取得します。
- LINE Notifyのウェブサイトにアクセスし、開発者としてログイン
- 「マイトークン」ページで新しいトークンを発行する
- トークンを控えて、どこか安全な場所に保存しておく
GASでLINE通知を送信するコード
では、GASを使ってLINEに通知を送信するための具体的なスクリプトを作成します。
GASスクリプトの作成
スプレッドシートからGASエディタを開き、以下のコードを入力します。
function sendLineNotification(message) {
var token = 'ここにあなたのLINEトークンを入力';
var url = 'https://notify-api.line.me/api/notify';
var options = {
method: 'post',
headers: { 'Authorization': 'Bearer ' + token },
payload: { 'message': message }
};
UrlFetchApp.fetch(url, options);
}
このスクリプトは、指定したメッセージをLINEに送信するための基本的なものです。
送信機能のテスト
作成したスクリプトのテストを行い、LINEに通知が届くか確認します。
function testSendNotification() {
sendLineNotification('テストメッセージ:こんにちは、世界!');
}
testSendNotification関数を実行してください。実行後、LINEにメッセージが届くはずです。
スプレッドシートで通知を管理する活用法
スプレッドシートでデータを整理し、より便利に活用する方法を見ていきましょう。
スプレッドシートの設定
スプレッドシートに通知内容を入力し、その内容を基に通知を送信するように設定します。
- スプレッドシートに「通知内容」という見出しを作成
- 行ごとに送信したいメッセージを入力
スプレッドシートと連携
スクリプトを修正して、スプレッドシートからメッセージを取得し、LINEに送るようにします。
function sendNotificationsFromSheet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) { // ヘッダーを飛ばす
sendLineNotification(data[i][0]);
}
}
この関数を実行すると、スプレッドシート上の通知内容がすべてLINEに送信されます。
練習問題
1. GASスクリプトを使って、週に一度、自動的にLINE通知が送られるようにするにはどうすれば良いでしょうか。
2. 複数のメッセージを一度に送信できるスクリプトを改善してください。
解答・解説
まず、週に一度自動的に通知を送信するスクリプトは、以下のように時間駆動型トリガーを設定します。
function createWeeklyTrigger() {
ScriptApp.newTrigger('sendNotificationsFromSheet')
.timeBased()
.everyWeeks(1)
.create();
}
This script sets a time-driven trigger that executes sendNotificationsFromSheet once every week. Use the Scripts Editor to run createWeeklyTrigger just once to set up the recurrence.
複数のメッセージをまとめて送信する場合、メッセージの区切り記号を用いて一度に送信することが可能です。
function sendBatchNotifications() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
var messages = [];
for (var i = 1; i < data.length; i++) {
messages.push(data[i][0]);
}
sendLineNotification(messages.join('\n')); // 改行区切りで連結
}
このスクリプトでは、スプレッドシート内のメッセージを改行で区切り、一度にまとめてLINEに送信します。