ADVERTISEMENT

【Googleスプレッドシート】TwilioメッセージログをSheetsに取り込み!通信履歴の管理

【Googleスプレッドシート】TwilioメッセージログをSheetsに取り込み!通信履歴の管理
🛡️ 超解決

Twilioで送受信したSMSや通話のログは、管理画面で確認できますが、大量のデータを分析したり、他のデータと統合するのは難しいものです。この記事では、GoogleスプレッドシートにTwilioのメッセージログを自動で取り込む方法を解説します。これにより、通信履歴を一元管理し、フィルタや関数で自由に分析できるようになります。具体的には、Apps ScriptとTwilio APIを組み合わせた手順を紹介します。

【要点】Twilioログをスプレッドシートに取り込むための3つのステップ

  • Twilio APIキーの発行: TwilioコンソールからAccount SIDとAuth Tokenを取得し、APIへの接続を準備します。
  • Apps Scriptでスクリプトを作成: Googleスプレッドシートの拡張機能からApps Scriptエディタを開き、APIを呼び出すコードを記述します。
  • トリガーで定期的に実行: 時間主導型のトリガーを設定し、自動的にログを取得してシートを更新します。

ADVERTISEMENT

Twilioログ取り込みの仕組みと事前準備

TwilioはREST APIを通じてメッセージや通話のログを取得できます。Googleスプレッドシート側では、Apps Scriptを使用してこのAPIにリクエストを送り、結果をシートに書き込みます。この方法のメリットは、専用のツールを追加する必要がなく、無料枠内で運用できる点です。ただし、TwilioのAPI利用にはAccount SIDとAuth Tokenが必要で、これらの情報は厳重に管理する必要があります。

Twilioメッセージログをスプレッドシートに取り込む手順

  1. TwilioコンソールでAPIキーを確認する
    Twilioにログインし、コンソールのダッシュボードから「Account SID」と「Auth Token」をメモします。これらの情報はスクリプト内で使用するため、安全な場所に保管してください。
  2. Googleスプレッドシートを準備する
    新しいスプレッドシートを作成し、シート名を「メッセージログ」などに変更します。最初の行にヘッダーとして「日時」「送信元」「送信先」「本文」「ステータス」などを入力します。
  3. Apps Scriptエディタを開く
    メニューから「拡張機能」→「Apps Script」を選択し、スクリプトエディタを開きます。プロジェクト名を適宜設定します。
  4. スクリプトコードを記述する
    エディタに以下のコードを貼り付けます。このスクリプトは、現在の日時から24時間前までのメッセージログを取得し、シートに追記します。
function getTwilioMessages() {
  var accountSid = 'あなたのAccount SID';
  var authToken = 'あなたのAuth Token';
  var url = 'https://api.twilio.com/2010-04-01/Accounts/' + accountSid + '/Messages.json?DateSent>=' + encodeURIComponent(getDate());
  var options = {
    'method' : 'GET',
    'headers' : {
      'Authorization' : 'Basic ' + Utilities.base64Encode(accountSid + ':' + authToken)
    },
    'muteHttpExceptions' : true
  };
  var response = UrlFetchApp.fetch(url, options);
  var data = JSON.parse(response.getContentText());
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('メッセージログ');
  var rows = [];
  for (var i = 0; i < data.messages.length; i++) {
    var msg = data.messages[i];
    rows.push([msg.date_sent, msg.from, msg.to, msg.body, msg.status]);
  }
  var lastRow = sheet.getLastRow() + 1;
  if (lastRow == 1) lastRow = 2;
  sheet.getRange(lastRow, 1, rows.length, 5).setValues(rows);
}
function getDate() {
  var d = new Date();
  d.setDate(d.getDate() - 1);
  return d.toISOString();
}

上記コードの「あなたのAccount SID」「あなたのAuth Token」は、実際の値に置き換えてください。また、シート名や取得するフィールドは必要に応じて変更します。

  1. トリガーを設定する
    スクリプトエディタの左側の時計アイコンから「トリガー」を開き、「トリガーを追加」ボタンをクリックします。実行する関数を「getTwilioMessages」、イベントのソースを「時間主導型」、時間間隔を「1時間」などに設定し、保存します。

Twilioログ取り込みで注意すべきポイントとよくあるトラブル

APIのレート制限に注意する

Twilio APIには1秒あたりのリクエスト数制限があります。トリガー間隔を短くしすぎると、制限に引っかかる可能性があります。1時間に1回程度の頻度に設定することをおすすめします。

認証情報の管理

Account SIDとAuth Tokenはスクリプト内に直接記述していますが、スクリプトの共有や公開には注意が必要です。機密情報が漏れないよう、スクリプトを公開しない、あるいはスクリプトプロパティに保存する方法を検討してください。

日付のフォーマット

Twilioから返される日時はUTC形式です。シートに書き込む前に、日本時間に変換したい場合は、スクリプト内で適宜変換処理を追加してください。

特定の相手先だけを抽出するカスタマイズ

スクリプト内でメッセージデータをループする際、if文を使って特定の電話番号のみを抽出することもできます。例えば、顧客からのSMSだけを管理したい場合などに便利です。

エラー時の通知設定

スクリプトが失敗した場合にメール通知を受け取りたい場合は、try-catch文を追加して、エラー発生時にメールを送信する処理を組み込みます。これにより、ログ取得漏れにすぐ気づけます。

ADVERTISEMENT

ログ取得方法の比較

方法 手軽さ 自動化 コスト 拡張性
手動ダウンロード 簡単です できません 無料です 低いです
Apps Script 中程度です できます 無料です 高いです
サードパーティツール 簡単です できます 有料の場合があります 中程度です

まとめ

この記事では、GoogleスプレッドシートのApps ScriptとTwilio APIを組み合わせて、メッセージログを自動取得する方法を解説しました。これで、通信履歴をリアルタイムに近い形で管理できるようになります。さらに、取得したデータを基にグラフを作成したり、QUERY関数で集計する応用も可能です。まずは上記の手順で基本の自動化を導入し、必要に応じてカスタマイズしてみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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