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メッセージログをスプレッドシートに取り込む手順
- TwilioコンソールでAPIキーを確認する
Twilioにログインし、コンソールのダッシュボードから「Account SID」と「Auth Token」をメモします。これらの情報はスクリプト内で使用するため、安全な場所に保管してください。 - Googleスプレッドシートを準備する
新しいスプレッドシートを作成し、シート名を「メッセージログ」などに変更します。最初の行にヘッダーとして「日時」「送信元」「送信先」「本文」「ステータス」などを入力します。 - Apps Scriptエディタを開く
メニューから「拡張機能」→「Apps Script」を選択し、スクリプトエディタを開きます。プロジェクト名を適宜設定します。 - スクリプトコードを記述する
エディタに以下のコードを貼り付けます。このスクリプトは、現在の日時から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」は、実際の値に置き換えてください。また、シート名や取得するフィールドは必要に応じて変更します。
- トリガーを設定する
スクリプトエディタの左側の時計アイコンから「トリガー」を開き、「トリガーを追加」ボタンをクリックします。実行する関数を「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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
