ADVERTISEMENT

【Googleスプレッドシート】Stripeの決済データを取込!APIキー認証とトランザクション転記

【Googleスプレッドシート】Stripeの決済データを取込!APIキー認証とトランザクション転記
🛡️ 超解決

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でプロジェクトを作成する

  1. スプレッドシートを開く
    データを取り込みたいスプレッドシートを開きます。新規作成でも構いません。
  2. Apps Scriptエディタを起動する
    メニュー「拡張機能」→「Apps Script」をクリックします。新しいタブでエディタが開きます。
  3. プロジェクト名を設定する
    デフォルトの「無題のプロジェクト」をクリックし、わかりやすい名前(例: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. 定期実行するトリガーを設定する

  1. トリガー作成画面を開く
    Apps Scriptエディタの左メニューから「トリガー」(時計アイコン)をクリックします。
  2. トリガーを追加する
    右下の「トリガーを追加」ボタンをクリックします。
  3. 関数と実行間隔を設定する
    「実行する関数」に「writeChargesToSheet」を選択し、「時間ベースのトリガー」で「1時間おき」など好みの間隔を選びます。
  4. 保存して許可する
    初回は承認ダイアログが表示されます。自分のアカウントを選び、権限を承認してください。

これで、設定した間隔で自動的に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

この記事の監修者
✍️

超解決 第一編集部

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