Shopify APIとGoogle Cloud Functionsの連携 - 定休日のテーマに自動切り替え
実家が新木場で新木場食堂「丸惣」を営んでいますが、新型コロナの影響で、店舗営業を自粛することになり、丸惣デリバリーを始めることになりました。その際に、Shopifyを利用してデリバリーサイトの立ち上げをサポートしました。
Shopifyは基本的に物販向けであるため、飲食店のデリバリーに利用しようとすると幾つかカスタマイズしたくなる部分があります。
そんな場合でも、ShopifyはAPIを公開してくれているので、割と自由にカスタマイズ可能です。
本記事では、Shopify APIとGoogle Cloud Functionsを連携して、定休日になった際に、定休日用のテーマに自動切り替えする手順を紹介します。Shopifyの管理画面から毎回手動でテーマ切り替えしても良いのですが、定休日になったタイミングで毎回画面操作するのは面倒ですので、自動化します。
Shopifyプライベートアプリの作成
まずは、Shopifyのプライベートアプリを作成します。
管理画面トップ → 「アプリ管理」 → 「プライベートアプリを管理する」 → 「新しいプライベートアプリを作成する」
「プライベートアプリ名」、「緊急連絡用開発者メール」は適当に入力してください。Admin APIについては、今回はテーマ切り替えを行いますので、「Theme templates and theme assets」に「読み取りおよび書き込み」権限を付与します。WebhookのAPIのバージョンは最新を選択します。
作成するとAPIキーとパスワードが発行されます。
Google Cloud Functionsの作成
GCPのメニューから「Cloud Functions」を選択し、「関数を作成」します。
名前は適当に入力します。割り当てメモリは最小の128MBで充分です。定休日はスケジューリングで自動切り替えするので、トリガーは「Cloud Pub/Sub」を選択し、Cloud Pub/Subトピックを新規作成します。
今回ランタイムはPython3.7を選択しました。
Requirements.txtにはShopifyAPIを追加します。
# Function dependencies, for example:
# package>=version
ShopifyAPI
Main.pyには、下記の通りです。API_KEY、PASSWORD、shop_urlについてはShopifyのプライベートアプリにあるAdmin PAIの内容を記載してください。
import base64
import shopify
def send(event, context):
API_KEY = "[APIキー]"
PASSWORD = "[パスワード]"
shop_url = "https://%s:%s@[myshopifyのホスト名]/admin" % (API_KEY, PASSWORD)
shopify.ShopifyResource.set_site(shop_url)
theme = shopify.Theme.find([テーマID])
theme.role = "main"
theme.save()
テーマIDは切り替えたいテーマID(数字11桁)を記載してください。テーマIDについては、テーマ編集時のURLに含まれているものです。もしくは下記URLを叩くと確認できます。
https://[APIキー]:[パスワード]@[myshopifyのホスト名]/admin/api/2020-04/themes.json
Cloud Schedulerの設定
GCPのメニューから「Cloud Scheduler」を選択し、「ジョブを作成」します。
名前は適当に入力します。頻度はcron形式で入力できますので、柔軟にスケジューリングできます。ターゲットは「Pub/Sub」を選択し、トピックはCloud Functions作成時に作成したトピックを指定します。ペイロードは今回は任意の文字列で結構です。
以上で任意の時間にShopifyのテーマが定休日のテーマに切り替わる仕組みができました。
他にも日にちが変わったら在庫を自動補充する等もできますので、デリバリーでも手のかからないサイト運用ができますね。
↓これが丸惣デリバリーのサイトです。豊洲、辰巳、潮見、東雲、新木場周辺の方は是非ご利用ください。
この記事が気に入ったらサポートをしてみませんか?