Stripeで受け付けた決済データを、毎回手動でエクスポートしてスプレッドシートに貼り付けていませんか。この作業は時間がかかるうえに、ヒューマンエラーも発生しやすいものです。本記事では、StripeのAPIキーを使って認証を行い、Apps Scriptを介して自動的にトランザクションデータをスプレッドシートに取り込む方法を解説します。これにより、手作業から解放され、常に最新のデータをシート上で確認できるようになります。
【要点】Stripe API連携で決済データを自動取得する方法
- Stripe APIキーの取得と設定: Stripeダッシュボードからシークレットキーをコピーし、Apps Scriptのプロパティに保存します。
- Apps ScriptによるHTTPリクエスト: UrlFetchAppを使ってStripeのchargesエンドポイントからデータを取得します。
- スプレッドシートへの転記: 取得したJSONデータをパースし、シートの最終行に追記します。
ADVERTISEMENT
目次
Stripe API連携の仕組みと必要な準備
StripeはRESTful APIを提供しており、適切な認証情報を付与してリクエストを送ることで、決済データを取得できます。認証にはBearerスキームを使用し、APIキー(シークレットキー)をAuthorizationヘッダーに含めます。主なエンドポイントとして、/v1/charges(チャージ一覧)、/v1/payment_intents(支払いインテント一覧)などがあります。本記事ではchargesを例に説明しますが、他のエンドポイントも同様の手順で取得できます。
連携を始める前に、以下の準備が必要です。
- Stripeアカウント(テストモードでも可)
- Googleスプレッドシート(データの格納先)
- Apps Scriptエディタを開ける環境(スプレッドシートの「拡張機能」→「Apps Script」)
Stripe決済データをスプレッドシートに取り込む手順
1. Stripe APIキーを取得する
Stripeダッシュボードにログインし、左メニューの「開発者」→「APIキー」を開きます。シークレットキー(sk_test_で始まるテストキー、またはsk_live_で始まる本番キー)をコピーしてください。このキーは後ほどスクリプトに設定します。キーは外部に漏れないよう注意が必要です。
2. Apps Scriptでプロジェクトを作成する
- スプレッドシートを開く
データを取り込みたいスプレッドシートを開きます。新規作成でも構いません。 - Apps Scriptエディタを起動する
メニュー「拡張機能」→「Apps Script」をクリックします。新しいタブでエディタが開きます。 - プロジェクト名を設定する
デフォルトの「無題のプロジェクト」をクリックし、わかりやすい名前(例:Stripe連携)に変更します。
3. トランザクション取得関数を実装する
エディタに以下のコードを記述します。APIキーは直接コードに書かず、プロパティサービスに保存します。
function getStripeCharges() {
// プロパティからAPIキーを取得
var props = PropertiesService.getScriptProperties();
var apiKey = props.getProperty('STRIPE_API_KEY');
if (!apiKey) {
throw new Error('APIキーが設定されていません');
}
var url = 'https://api.stripe.com/v1/charges';
var options = {
'method': 'get',
'headers': {
'Authorization': 'Bearer ' + apiKey
},
'muteHttpExceptions': true
};
var response = UrlFetchApp.fetch(url, options);
var data = JSON.parse(response.getContentText());
// エラーチェック
if (data.error) {
throw new Error('Stripe APIエラー: ' + data.error.message);
}
return data.data; // chargesの配列を返す
}
続いて、プロパティにAPIキーを保存する関数を別途作成します。
function setApiKey() {
var props = PropertiesService.getScriptProperties();
// 自分のシークレットキーに置き換えてください
props.setProperty('STRIPE_API_KEY', 'sk_test_XXXXXXXXXXXXXXXXXXXX');
}
初回のみsetApiKey()を実行してキーを保存します。その後、getStripeCharges()をテスト実行し、データが返ってくることを確認します。
4. スプレッドシートに転記する関数を作成する
function writeChargesToSheet() {
var charges = getStripeCharges();
var sheet = SpreadsheetApp.getActiveSheet();
// ヘッダー行がない場合は追加
if (sheet.getLastRow() === 0) {
sheet.appendRow(['ID', '金額', '通貨', 'ステータス', '作成日時']);
}
// 各チャージを1行ずつ追加
charges.forEach(function(charge) {
var row = [
charge.id,
charge.amount / 100, // セント→金額換算
charge.currency.toUpperCase(),
charge.status,
new Date(charge.created * 1000) // UNIX時刻を日付に変換
];
sheet.appendRow(row);
});
}
この関数を実行すると、現在のシートの最終行に新しいデータが追加されます。必要に応じて、既存データの重複を避けるロジックを追加してもよいでしょう。
5. 定期実行するトリガーを設定する
- トリガー作成画面を開く
Apps Scriptエディタの左メニューから「トリガー」(時計アイコン)をクリックします。 - トリガーを追加する
右下の「トリガーを追加」ボタンをクリックします。 - 関数と実行間隔を設定する
「実行する関数」に「writeChargesToSheet」を選択し、「時間ベースのトリガー」で「1時間おき」など好みの間隔を選びます。 - 保存して許可する
初回は承認ダイアログが表示されます。自分のアカウントを選び、権限を承認してください。
これで、設定した間隔で自動的にStripeの決済データがスプレッドシートに反映されるようになります。
実装時の注意点とよくあるエラー
APIキーが漏洩するリスク
シークレットキーをコード内に直接記述すると、スクリプトを共有した際にキーが露出します。必ず前述のようにPropertiesServiceを使用するか、Google Cloud PlatformのSecret Managerなどを利用して安全に管理してください。テストモードのキーでも同様に扱います。
レート制限に引っかかる
Stripe APIにはレート制限があり、1秒あたり100リクエストまで可能です。大量のデータを取得する場合は、ページネーション処理を実装する必要があります。limitパラメータやstarting_afterパラメータを使って複数回に分けて取得しましょう。
日付のフォーマットがUNIX時刻で扱いにくい
Stripe APIが返すcreatedフィールドはUNIXタイムスタンプ(秒)です。そのままスプレッドシートに書き込むと数値になります。上記コードではnew Date(charge.created * 1000)として日付オブジェクトに変換しています。スプレッドシートの書式設定で日付表示に変更してください。
既存データとの重複を防ぎたい
トリガーで毎回全データを追加すると、同じレコードが重複してしまいます。対策として、最終取得日時をプロパティに保存し、その日時以降のデータだけを取得するようにコードを改良することをおすすめします。Stripe APIはcreatedフィルタに対応しています。
ADVERTISEMENT
Stripe API連携と手動エクスポートの比較
| 項目 | API連携(自動) | 手動エクスポート |
|---|---|---|
| データ更新頻度 | トリガー設定で任意の間隔に設定可能 | 手動でその都度実施する必要あり |
| 作業の手間 | 一度構築すれば毎回自動取得 | 毎回ログイン→エクスポート→貼り付けの作業が発生 |
| ヒューマンエラー | スクリプトが正確に処理するため防止できる | 貼り間違いやフォーマット乱れのリスクあり |
| リアルタイム性 | 最短1分間隔のトリガーでほぼリアルタイム | 手動のためタイムラグが大きい |
| データ量の制限 | ページネーション対応で大量データも取得可能 | エクスポート上限やブラウザ負荷に影響される |
まとめ
本記事では、StripeのAPIキーを利用して決済データをスプレッドシートに自動取り込む方法を解説しました。具体的には、シークレットキーの安全な保管方法、Apps ScriptによるHTTPリクエストの実装、取得データのシートへの転記手順をご紹介しました。この仕組みを応用すれば、payment_intentsやcustomersなど他のエンドポイントも同様に取得できます。ぜひ実際の業務で活用し、手作業から解放されてみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
