GASによるStripeのAPI連携
StripeのAPIに関する説明は公式では英語しかないため、自分の備忘録として書き残します。
今回はStripeの顧客情報をgoogleスプレッドシートに格納しようと思います。
先にコードを載っけます。
function myFunction() {
// APIエンドポイント
const URL = 'https://api.stripe.com/v1/customers'
// パラメーター
const LIMIT = 1;
const PARAMS = `?limit=${LIMIT}`
// APIキー
const APIKEY = 'あなたのAPIキー'
// 認証設定
const SET = {
headers: {
Authorization: 'Basic ' + Utilities.base64Encode(APIKEY)
},
muteHttpExceptions: true,
method: 'GET'
}
// リクエスト
const RES = UrlFetchApp.fetch(URL + PARAMS, SET)
// 取得結果を格納する変数を宣言
var name = "";
var mailAddress = "";
// 取得結果をオブジェクト型にパース
var data = JSON.parse(RES.getContentText());
this.name = data.data[0].name;
this.mailAddress = data.data[0].email;
// スプレッドシートを指定
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadSheet.getActiveSheet();
var lastRow = sheet.getLastRow();
sheet.getRange(lastRow, 2).setValue(this.name);
sheet.getRange(lastRow, 3).setValue(this.mailAddress);
}
基本的にはコメントに書いてあるとおり実装しています。
// APIエンドポイント
const URL = 'https://api.stripe.com/v1/customers'
// パラメーター
const LIMIT = 1;
const PARAMS = `?limit=${LIMIT}`
公式に載っているエンドポイントによって取得できる値や、設定できるパラメータが変わりますのでご参考にしてください。(Stripe API Reference)
エンドポイントの最後のパラメータがcustomersではなくproductsに変わったり、エンドポイント次第でGETかPOSTかも分かれるので要確認してください。
パラメータは今回1つですが複数設定する時は
'?created=20200101&limit=${LIMIT}'
のように&で繋ぐことで複数設定できます。
ちなみに今回は最新の1件のみ取得したかったので、日付のパラメータは書いておりません。
LIMIT=1の部分は100までなら好きな数字に変更するとその件数分取得できるので、プログラミング初心者の方は数字を増やして複数取得できた値をどのように処理するのか試してみてください。
スプレッドシート
実行したプログラムから得た値を格納するスプレッドシート を指定しています。
// スプレッドシートを指定
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadSheet.getActiveSheet();
var lastRow = sheet.getLastRow();
sheet.getRange(lastRow, 2).setValue(this.name);
sheet.getRange(lastRow, 3).setValue(this.mailAddress);
getLastRow()を使うことで現在書き込みがある1番下の行を返してくれるので、その行の2列目・3列目に値を入れるようになっています。
最後に
プログラミングに慣れている方は簡単だと思うのですが、初心者や英語が嫌いな人はわかりづらいかと思い書いてみました。
自分自身APIを扱うのが久々で、ちゃんと扱えるかなと思いましたが、無事できて良かったです。
APIを扱えると実装の幅が広がりますね!
日頃はSalesforceエンジニアとして働いており、ブログもやっておりますので、是非見に来てみて下さい〜
この記事が気に入ったらサポートをしてみませんか?