ADVERTISEMENT

【Googleスプレッドシート】LINE Messaging APIとの連携!プッシュメッセージ送信の方法

【Googleスプレッドシート】LINE Messaging APIとの連携!プッシュメッセージ送信の方法
🛡️ 超解決

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を取得する方法も覚えておきましょう。

  1. LINE Developersコンソールにログイン
    ブラウザでLINE Developersコンソールにアクセスし、LINEアカウントでログインします。プロバイダーがない場合は新規作成します。
  2. チャネルを作成
    「新規チャネル作成」をクリックし、チャネルタイプを「Messaging API」に設定します。必要な項目(チャネル名、説明、アプリタイプなど)を入力して作成します。
  3. アクセストークンを発行
    作成したチャネルの「Messaging API」タブを開き、「アクセストークン」欄の「発行」ボタンをクリックします。表示されたトークンをコピーして、安全な場所に保存します。このトークンは後でスクリプトで使います。
  4. 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」から開きます。以下の手順で記述します。

  1. スクリプトエディタを開く
    スプレッドシートのメニューから「拡張機能」→「Apps Script」を選択します。デフォルトのコード.gsファイルが開きます。
  2. 関数を作成
    以下のコードをコピーして貼り付けます。

    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」の部分を、実際のアクセストークンに書き換えてください。

  3. 関数をテスト実行
    スクリプトエディタで「実行」ボタンをクリックすると、初回は承認が必要です。表示される画面に従って権限を付与します。承認後、sendPushMessage関数が実行され、シートのデータに基づいてメッセージが送られます。
  4. ログを確認
    送信結果は「表示」→「ログ」で確認できます。成功なら「送信成功: userID – 200」と表示されます。エラーが発生した場合はレスポンスコードやエラーメッセージを確認します。

トリガーを設定して自動化する

毎日決まった時間にメッセージを送りたい場合や、シートが更新されたときに自動で送信したい場合は、トリガーを設定します。

  1. トリガー設定画面を開く
    スクリプトエディタの左側の時計アイコン「トリガー」をクリックします。「トリガーを追加」ボタンをクリックします。
  2. トリガーの種類を選択
    「実行する関数」で「sendPushMessage」を選択します。「イベントのソース」は「時間主導型」を選び、時間間隔(例:毎日午前9時〜10時)を設定します。または「スプレッドシートから」を選び「編集時」に設定することもできます。必要に応じて通知設定も行います。
  3. 保存して完了
    トリガーを保存すると、設定したタイミングで自動的に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

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。