決済プラットフォームである「Stripe」は使いやすくて良いサービスだと思います。
StripeにはAPIが用意されているので、APIを用いて、外部からデータを取得したりすると便利です。
GASでStripeのAPIを使用して、Stripeの顧客を取得する方法を紹介します。
StripeのAPIキーを取得する
Stripeダッシュボードにて、以下のページから取得できます。
https://dashboard.stripe.com/apikeys

シークレットキーを使用します。
キーの取り扱いは厳重に行ってください。
StripeのAPIを呼び出す処理を作成する
APIを呼び出す際に上記で取得したシークレットキーを使用します。
シークレットキーは、スクリプトプロパティに保存しています。
スクリプトプロパティは、以前は画面から入力して保存できたのですが、新しいエディタになってできなくなったので、以下のようにコードで保存する処理を書いています。
function setProperty() {
let prop = PropertiesService.getScriptProperties();
prop.setProperty("keySecretStripe", "XXXXXXXXX");
}
APIを呼び出す処理は、汎用性を持たせるため、以下のようにしました。
function fetchToStripe(url) {
const keySecretStripe = PropertiesService.getScriptProperties().getProperty("keySecretStripe");
let params = {
"method": "get",
"headers": {Authorization: "Basic " + Utilities.base64Encode(keySecretStripe + ":")},
};
let res = JSON.parse(UrlFetchApp.fetch(url, params).getContentText());
return res;
}
2行目が、スクリプトプロパティからシークレットキーを取得する処理です。
APIを呼び出すには、指定のURLをgetで、シークレットキーを付けて呼び出すという形です。
顧客を取得する
顧客の一覧を取得する
まず、顧客の一覧を取得する処理です。
顧客の一覧を取得するエンドポイントは、/v1/customers です。
function getCustomers() {
const url = "https://api.stripe.com/v1/customers";
let response = fetchToStripe(url);
for (let data of response["data"]) {
Logger.log(`id:${data["id"]} email:${data["email"]} name:${data["name"]}`);
}
}
取得できる項目は、代表的なものだと以下です。
- id:ユニークなID
- email:顧客のメールアドレス
- name:顧客の名前
取得できるオブジェクトについては以下をご覧ください。
https://stripe.com/docs/api/customers/object
一覧を取得する場合は、件数の上限が決まっていて、デフォルトの取得件数は10件です。
10件を超えて取得する場合は、「limit」パラメータを付けます。
指定できる上限は100件です。
https://api.stripe.com/v1/customers?limit=100
100件を超えて取得したい場合は、ページネーションのような仕組みを利用することになります。
ただし、ページネーションを件数で指定できるようなパラメータがなく、取得する位置を示す「starting_after」というパラメータを使用します。
例えば、101件目以降を取得する場合、100件目の顧客IDを保存しておいて、パラメータで指定します。
以下のような形式です。
以下の例だと、「cus_XXXXXX」が最後の顧客IDで、「cus_XXXXXX」の次の顧客から取得することになります。
https://api.stripe.com/v1/customers?starting_after=cus_XXXXXX
この形式は、Stripeダッシュボードも同様のパラメータを使用しているので、ダッシュボードで見てもらうと分かりやすいと思います。
また、検索条件にメールアドレスを使用することができます。
「email」というパラメータを付けると、取得する対象のメールアドレスを指定できます。
https://api.stripe.com/v1/customers?email=xxxxxx@gmail.com
その他、使用できるパラメータや取得できる項目は公式ドキュメントをご覧ください。
https://stripe.com/docs/api/customers/list
指定したIDの顧客を取得する
続いて、指定したIDの顧客を取得する処理です。
顧客を1件取得するエンドポイントは、/v1/customers/:id です。
let customer = getCustomer("cus_XXXXX");
Logger.log(`id:${customer["id"]} email:${customer["email"]} name:${customer["name"]}`);
function getCustomer(id) {
const url = "https://api.stripe.com/v1/customers/" + id;
return fetchToStripe(url);
}
取得できる項目は公式ドキュメントをご覧ください。
https://stripe.com/docs/api/customers/retrieve