こんにちは。CData Software Japan リードエンジニアの杉本です。
最近SquareでPOSレジを管理しているお客様から「Squareの商品画像を一括で登録・更新したい」という相談を受けました。
以下のSquare公式サイトでも確認できる、以下のようなタブレットで表示される商品一覧の画像ですね。
ちなみにWebSite上では以下のように表示されていると思います。
私も試しにUIから登録してみたところ、これって結構面倒なんですね。商品一つ一つを開いて、画像をアップロードして登録する必要があり、「10個20個なら、まあ画面できるけど、100個~とかになったら発狂しそう」という感じでした。
商品画像をリブランディングした時とかも大変そうです。
そこで今回はこのSquareの商品画像をCData Excel Add-inを使って一括で登録・更新する方法を紹介したいと思います!
ちなみに、今回はCData Excel Add-inを使って手動で一括更新する方法を紹介していますが、例えば以下の記事で紹介しているようにデータ連携を自動化するツールなどを利用することで、定期的に画像を更新することも可能です。
インストールおよび接続設定
まず、CData Excel Add-in for Square のインストールおよび接続設定を行いましょう。
以下のページから30日間のトライアルが入手できるので、ダウンロードして、インストールを行います。
インストールはダイアログに従ってすすめるだけでOKです。
インストールが完了すると、以下のようにCDataのリボンタブが追加されて「データの取得」→「取得元:Square」からSquareのデータにアクセスすることができるようになります。
「取得元:Square」をクリックすると、以下のように接続エディタが表示されます。
ここでSquare APIに接続するために必要な情報を入力します。
プロパティ名 | 値 | 備考 |
---|---|---|
Location Id | YOUR_LOCATION_ID | 必要に応じてLocation Idを指定します。 |
Schema | v2 | 利用するAPIのバージョンを選択します。最新がv2です。 |
入力後、「接続」をクリックするとブラウザが立ち上がり、Squareへのデータアクセス許可を求める画面が表示されるので、アクセスを許可します。
その後、以下のようにメッセージが表示されれば接続設定は完了です。
CatalogImages 一覧取得
さて、実際の作業に入る前にまず商品画像を登録するプロセスを確認しておきましょう。
Squareの商品画像は「CatalogImages」というテーブルで管理されており、まずここの一覧に商品画像を登録する必要があります。
登録には「CreateCatalogImage」というストアドプロシージャ機能を使います。
これで画像を登録すると商品画像のIDが生成されるので、このIDを元に商品一覧が取得できる「CatalogItems」テーブルで画像を紐付ける、という流れになります。
まずは「CatalogImages」を確認してみましょう。
テーブル選択画面で「CatalogImages」を選択し
取得条件を指定して、データを取得します。
すると以下のように現在登録されている「CatalogImages」一覧が表示されます。左端にある「Id」が商品画像のIdになっているので、最終的にはこれを用いて画像を紐付けます。
CatalogImagesへ画像をアップロードする
それでは実際に画像をSquareにアップロードしてみましょう。
前述の通りこの画像のアップロードは「CreateCatalogImage」というストアドプロシージャを使う必要があります。
通常であればこの機能はVBAなどのプログラミング言語で呼び出さなければいけないのですが、CData Excel Add-in に存在する「CData Excel Formulas」と呼ばれる独自のExcel 関数を使うことで、簡単に実行することができます。
https://www.cdatablog.jp/entry/2021/08/20/143826
まずは対象となる画像を用意しましょう。今回は以下のようなCDataのロゴマーク「cdata_300x300.png」を用意しました。
この画像ファイルは「C:\Work」に格納されているので、完全パスは「C:\Work\cdata_300x300.png」になります。ただし、Excel Add-inから呼び出す場合、エスケープを考慮する必要があるので「C:\Work\cdata_300x300.png」とします。
このような情報を元に、アップロードする画像の一覧をExcelで作成します。例えば以下のようにファイルパスの一覧である「ImageFile」とファイルのキャプションを示す「ImagedataCaption」という列を用意しました。
あとはこのデータを元に「CreateCatalogImage」を実行するクエリを組み立てます。
「CreateCatalogImage」は以下のように実行するSQLをになっていて、「ImageFile」に画像のパス・「ImageDataCaption」に画像のキャプションを指定できます。
EXECUTE CreateCatalogImage ImageFile='C:\\Work\\cdata_300x300.png', ImageDataCaption='Test Image';
これをExcel上では以下のように予め作成した一覧から参照するようにExcel関数を組み立てます。第1引数に対象となるストアドプロシージャのSQL、第2引数にSquareのコネクション名(デフォルトはSquare.Connection1です)、第3引数は必要に応じてパラメータ、第4引数に処理結果を出す場所を指定します。
=CDATAQUERY("EXECUTE CreateCatalogImage ImageFile='"&A2&"', ImageDataCaption='"&B2&"'","Square.Connection1",,"D2")
これをExcel のセル、今回はC列に貼り付けることで入力した瞬間にファイルのアップロードが自動的に行われます。
ちなみに参照している先の値が書き換わると、再度ストアドプロシージャが実行されて画像が登録されるので注意しましょう。
CatalogImages Idを使って CatalogItemsを更新
これで改めて「CatalogImages」一覧を呼び出してみると、先程の画像がアップロードされていると思います。ここで更新する対象のIdを確認しておきましょう。
あとは、「CatalogItems」テーブルを表示し
対象となる商品を取得するクエリを記述し、データを取得します。
項目右端に「ImageId」という項目があるので、ここに先程取得した「CatalogImages」のIdを指定して、「行の更新」ボタンをクリックすれば、画像を更新することができます。
この操作は一括で行うことができるので、画像さえ登録してしまえば、手軽に管理することができますね。
なお、注意事項ですが、現在紐付けられているImageIdはAPI制約上確認することができないので注意してください。
おわりに
このような形で Square Excel Add-in は Squareデータの管理や参照を手軽に行うことができるようになっています。
もし操作や設定でわからない点があれば、お気軽にテクニカルサポートまでお問い合わせください。