GAS(Google App Script)で Stripeなどの請求業務を効率化しよう

2.5K Views

May 02, 23

スライド概要

春のJavaScript祭り Online 2023

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

GAS(Google App Script)で Stripeなどの請求業務を効率化しよう 春のJavaScript祭り Online 2023

2.

Agenda • Google App Script(GAS)とは? • Google Apps内の情報を、外部サービスに連携しよう • 外部サービスからGASをWebhookで呼びたかった話

3.

HELLO! ✋ 岡本 秀高 (Hide) • Stripe Developer Advocate • WordCamp Kyoto 2017 • @hidetaka_dev • https://hidetaka.dev

4.

Agenda • Google App Script(GAS)とは? • Google Apps内の情報を、外部サービスに連携しよう • 外部サービスからGASをWebhookで呼びたかった話

5.

Google App Script(GAS)とは?

6.

Sheetなどのアプリから作成できる

7.

ブラウザ上でJSを記述

8.

Google AppのAPIは 入力補完を参考に

9.

任意のSheetに行を追加する例 function doPost(e) { const ss = SpreadsheetApp.openById(‘Sheet ID') const sheet = ss.getSheetByName(‘Sheet name’) sheet.appendRow([ 2, “Hello” ]) }

10.

連携したい Googleアプリの 権限をリクエスト

11.

実行するたびに、 行が追加される

12.

サンプルが豊富 https://developers.google.com/apps-script/samples?hl=ja

13.

紹介されているサンプル(一部) • YouTube動画の視聴数やコメントなどをSheetに保存&通知 • Formの選択内容に応じて、異なる内容のメールを送信 • Sheetに登録したデータから、セッション予約フォームを作成 • 個人カレンダーの予定を、チームや会社カレンダーに同期

14.

Agenda • Google App Script(GAS)とは? • Google Apps内の情報を、外部サービスに連携しよう • 外部サービスからGASをWebhookで呼びたかった話

15.
[beta]
Stripe APIを呼び出す例(顧客作成)
UrlFetchApp.fetch('https://api.stripe.com/v1/customers', {
method: 'post',
headers: {
Authorization: "Basic " + Utilities.base64Encode("sk_test_xxxxx")
},
payload: {
name: "Hello GAS"
}
})

16.

ブラウザ上で編集する場合、 SaaSのAPIもUrlFetchApp.fetchを使う

17.

cURLのサンプルを 参考にしよう

18.

SDKを使いたい場合は、 ローカルでビルド&デプロイ

19.

GASを使った自動化の例 • 見積もり依頼フォームを送信: • Stripeで見積もりデータを作成 • Stripe上に生成されたPDFのURLを添えてGmailで返信 • SheetやHubSpotなどにリード情報を登録

20.

GASを使った自動化の例 - 2 • 毎日指定時間にトリガーを設定 • StripeのAPIで「未払い顧客情報」を取得 • Gmailで支払いリマインドメールを送信 • GmailやSlack APIで社内に要対応顧客リストを作成

21.

事業分析に 使っている例 https://bit.ly/3AlbGFb

22.

GASでアプリとサービス同士を連携 • UrlFetchApp.fetchで外部SaaSにもデータ送信可能 • ブラウザ上で編集するか、ClaspでCLIアップロード • 「いつもの事務作業」を、GASで自動化しよう

23.

Agenda • Google App Script(GAS)とは? • Google Apps内の情報を、外部サービスに連携しよう • 外部サービスからGASをWebhookで呼びたかった話

24.

GAS実行のための URLを作成

25.

生成されたURLを コピーする

26.

Stripeの Webhookに登録

27.
[beta]
GETはdoGet, POSTはdoPost関数
function doPost(e) {
const ss = SpreadsheetApp.openById(‘Sheet ID')
const sheet = ss.getSheetByName(‘Sheet name')
const event = JSON.parse(e.postData.contents)
const stripeData = event.data.object
switch (event.type) {
case 'customer.created': {
sheet.appendRow([
stripeData['id'],
stripeData['name']
])
break
}
default:
break
}
}

return ContentService.createTextOutput("OK")

28.

Stripeで 顧客データを作成

29.

Sheetに ユーザー情報が同期

30.

ただし

31.

• API URLを一般公開 • 「誰でも呼び出せる」 • Gmailと連携していると スパムメールが 送れてしまう

32.

GASで リクエストヘッダーが とれない・・・ぽい?

33.

わかる方 後で @hidetaka_dev 宛に リンクなど送ってください🙇

34.

まとめ • Google Appsユーザは、JS(GAS)で業務効率化が可能 • Webhookとして使うには、検証処理が組めるか要チェック • JS (GAS / AWS)で サブスク・請求業務を自動化する話をもっとしたい!