Googleスプレッドシートで管理している顧客リストやタスク管理表をもとに、LINEにプッシュメッセージを自動送信したいと思ったことはありませんか。手動でメッセージを一つずつ送るのは非効率です。LINE Messaging APIとスプレッドシートを連携すれば、シート上のデータを基に自動でメッセージを送れます。この記事では、スプレッドシートからLINE公式アカウントのプッシュメッセージを送信する具体的な手順を解説します。
【要点】LINEメッセージをスプレッドシートから自動送信する方法
- LINE Developersコンソールでチャネル作成: Messaging APIのチャネルを作成し、アクセストークンとUser IDを取得します。
- スプレッドシートにデータを準備: 送信先のUser IDとメッセージ内容をシートの列に整理します。
- Google Apps ScriptでPOSTリクエスト: URL Fetchサービスを使ってLINE Messaging APIのエンドポイントにメッセージを送信します。
- トリガー設定で自動実行: 時間主導型トリガーや編集トリガーを設定し、定期的またはイベント駆動でメッセージを送ります。
ADVERTISEMENT
目次
LINE Messaging API連携の仕組みと準備
LINE Messaging APIは、LINE公式アカウントの機能を拡張するためのAPIです。スプレッドシートのデータを基にプッシュメッセージを送るには、まずLINE Developersコンソールでチャネルを作成し、アクセストークンと送信先ユーザーのUser IDを取得する必要があります。これらをスプレッドシートに保存し、Google Apps ScriptからAPIを呼び出してメッセージを送信します。この方法なら、数百件のメッセージも一括処理できます。
必要なもの
- Googleアカウント(スプレッドシートとApps Scriptを使用するためのもの)
- LINE公式アカウント(Messaging APIを有効にしたもの)
- 送信先のLINEユーザー(友だち登録が必要)
LINE Developersでチャネルを作成する手順
まずLINE Developersコンソールにアクセスし、プロバイダーとチャネルを作成します。チャネルタイプは「Messaging API」を選択します。作成後、チャネル基本設定から「アクセストークン」を発行し、スプレッドシートにメモします。また、送信先のユーザーIDを確認するため、自分自身のUser IDを取得する方法も覚えておきましょう。
- LINE Developersコンソールにログイン
ブラウザでLINE Developersコンソールにアクセスし、LINEアカウントでログインします。プロバイダーがない場合は新規作成します。 - チャネルを作成
「新規チャネル作成」をクリックし、チャネルタイプを「Messaging API」に設定します。必要な項目(チャネル名、説明、アプリタイプなど)を入力して作成します。 - アクセストークンを発行
作成したチャネルの「Messaging API」タブを開き、「アクセストークン」欄の「発行」ボタンをクリックします。表示されたトークンをコピーして、安全な場所に保存します。このトークンは後でスクリプトで使います。 - User IDを取得
同じタブの「ボット設定」でWebhookを有効にし、友だち追加時のあいさつメッセージなどを送信して、その応答から自分のUser IDを確認する方法もあります。または、LINE Developersの「コンソール」→「チャネル」→「友だち」から利用者のUser IDを確認可能です。自分用のテストには、自分のUser IDを使うと良いです。
スプレッドシートにデータを準備する
次に、送信先とメッセージ内容をスプレッドシートに整理します。以下の列を用意します。
- A列: User ID(送信先ユーザーのID)
- B列: メッセージ本文(送信するテキスト)
- C列(オプション): 送信フラグ(TRUE/FALSE)など、必要に応じて追記します。
実際のデータを入力したら、シート名を「送信リスト」などに変更し、後でスクリプトで参照しやすくします。
ADVERTISEMENT
Google Apps Scriptでプッシュメッセージを送信する
スプレッドシートにApps Scriptを追加し、LINE Messaging APIを呼び出すコードを記述します。スクリプトエディタはスプレッドシートの「拡張機能」→「Apps Script」から開きます。以下の手順で記述します。
- スクリプトエディタを開く
スプレッドシートのメニューから「拡張機能」→「Apps Script」を選択します。デフォルトのコード.gsファイルが開きます。 - 関数を作成
以下のコードをコピーして貼り付けます。function sendPushMessage() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('送信リスト');
const data = sheet.getDataRange().getValues();
const token = 'YOUR_CHANNEL_ACCESS_TOKEN'; // 手順1で取得したアクセストークンに置き換え
const url = 'https://api.line.me/v2/bot/message/push';for (let i = 1; i < data.length; i++) {
const userId = data[i][0]; // A列
const messageText = data[i][1]; // B列
if (userId && messageText) {
const payload = {
to: userId,
messages: [{ type: 'text', text: messageText }]
};
const options = {
method: 'post',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
},
payload: JSON.stringify(payload),
muteHttpExceptions: true
};
try {
const response = UrlFetchApp.fetch(url, options);
Logger.log('送信成功: ' + userId + ' - ' + response.getResponseCode());
} catch (e) {
Logger.log('送信失敗: ' + userId + ' - ' + e.toString());
}
}
}
}「YOUR_CHANNEL_ACCESS_TOKEN」の部分を、実際のアクセストークンに書き換えてください。
- 関数をテスト実行
スクリプトエディタで「実行」ボタンをクリックすると、初回は承認が必要です。表示される画面に従って権限を付与します。承認後、sendPushMessage関数が実行され、シートのデータに基づいてメッセージが送られます。 - ログを確認
送信結果は「表示」→「ログ」で確認できます。成功なら「送信成功: userID – 200」と表示されます。エラーが発生した場合はレスポンスコードやエラーメッセージを確認します。
トリガーを設定して自動化する
毎日決まった時間にメッセージを送りたい場合や、シートが更新されたときに自動で送信したい場合は、トリガーを設定します。
- トリガー設定画面を開く
スクリプトエディタの左側の時計アイコン「トリガー」をクリックします。「トリガーを追加」ボタンをクリックします。 - トリガーの種類を選択
「実行する関数」で「sendPushMessage」を選択します。「イベントのソース」は「時間主導型」を選び、時間間隔(例:毎日午前9時〜10時)を設定します。または「スプレッドシートから」を選び「編集時」に設定することもできます。必要に応じて通知設定も行います。 - 保存して完了
トリガーを保存すると、設定したタイミングで自動的にsendPushMessageが実行され、シートの全ユーザーにメッセージが送られます。
注意点とよくあるエラー
アクセストークンの有効期限
発行したアクセストークンには有効期限があります。LINE Developersコンソールで定期的に再発行し、スクリプトのトークンを更新する必要があります。長期有効トークンはありませんので、運用前に有効期限を確認してください。
送信可能なメッセージ数の制限
LINE Messaging APIには、1分あたりのリクエスト数や1日あたりの送信数に制限があります。大量のユーザーに送る場合は、送信間隔を空けたり、バッチ処理に分割したりする必要があります。具体的な制限はLINE Developersドキュメントを参照してください。
User IDが正しくない場合のエラー
存在しないUser IDやブロックされたユーザーに対して送信しようとすると、エラーコード400や403が返ります。スクリプト内でtry-catchしてエラーをログに残し、シートのUser ID列を見直すと良いです。
シートの1行目を見出しとして扱う
サンプルコードではi=1からループを開始しています。これは1行目を見出し行と想定しているためです。見出し行がない場合はi=0からに変更してください。
VLOOKUPとQUERYの比較
| 関数 | 用途 | 対応データ量 | 難易度 |
|---|---|---|---|
| VLOOKUP | 単一の値を検索して返す | 小規模〜中規模 | 易しい |
| QUERY | SQLライクなデータ抽出・集計 | 大規模 | やや難しい |
まとめ
この記事では、GoogleスプレッドシートとLINE Messaging APIを連携してプッシュメッセージを送信する方法を解説しました。LINE Developersでチャネルを作成し、アクセストークンを取得した上で、Apps ScriptでURL Fetchを使うことでスプレッドシート上のデータから自動送信が可能です。トリガーを設定すれば、毎日決まった時間やシート更新時にメッセージを送ることもできます。応用として、メッセージ内容をテンプレート化したり、画像やスタンプを送信する機能を追加することもできます。まずは自分のUser IDでテスト送信を行い、動作を確認してみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
