スマレジにAPIでデータを登録してみた


# はじめに

こんにちは、すぎもんです:smile:

前回「[スマレジからAPIでデータを取得してみた](https://qiita.com/sugimon/private/0ff6de9add15c60a4779)」という記事を投稿してみました。
スマレジは多くの企業で利用されているPOSシステムであり、効率的な店舗運営をサポートしています。
そのため、マスター情報があるデータベースや他のSaaS製品に登録されたデータをAPIでスマレジに登録することで、売上や在庫情報をタイムリーに管理できたり、在庫切れや2重登録、過剰在庫のリスクを軽減します。
そこで、今回はHULFT Squareを使って、スマレジにデータを登録することでデータの自動化と効率化を実現させる方法をご紹介します。


# 今回やること
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/92605bfb-16e6-b619-a18d-e32591001ee7.png)
今回は他のシステムから来たCSVファイルをスマレジに登録してみたいと思います。
この処理によって外部システムで行われた処理をスマレジに反映させることが出来るのか試してみます。

# スマレジと連携するのに必要な設定
### スマレジ側の設定
1.スマレジのサンプルアプリ登録
2.スマレジのデータ登録先を確認

### HULFT Square側の設定
3.コネクションとアクセストークン取得処理
4.CSV読み取り処理
5.会員情報を登録
6.マッピング
7.繰り返しデータ件数
8.実行結果確認






## スマレジ側の設定
### 1.スマレジのサンプルアプリ登録
前回「iPaaS」という名前で作成したアプリを使用します。
ここで発行した「クライアントID」「クライアントシークレット」を使用します。
※前回：[1.スマレジのサンプルアプリ登録](https://qiita.com/sugimon/private/0ff6de9add15c60a4779)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/4ede2049-4789-b76d-40ff-3e691777fc76.png)


### 2.スマレジのデータ登録先を確認

登録する項目は、スマレジの「会員」の項目を使います。
現在データは一件も登録されていないので、ここにデータを登録していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/b125871a-a6e2-20b9-770d-6cfd793f6355.png)



## HULFT Square側の設定
### 3.コネクションとアクセストークン取得処理
HULFT Squareでアクセストークンを取得し、会員情報を取得するためのURLの設定をします。
**コネクションの設定**と**アクセストークン取得処理**は前回作成したものを使用します
※前回：[「3.コネクションの設定」「4.アクセストークン取得処理」](https://qiita.com/sugimon/private/0ff6de9add15c60a4779)

:::note info
**コネクションの設定**
[スマレジの仕様書](https://developers.smaregi.dev/apidoc/common/#section/%E6%A6%82%E8%A6%81)に沿って「➀アクセストークンAPI」「➁プラットフォームAPI」を設定しています。
HULFT Squareのコネクション設定画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6778a1cd-d5da-89a3-eabd-2e877183196e.png)
:::

:::note warn
**アクセストークン取得処理**
HULFT Squareのデザイナー画面でアクセストークンを取得する処理
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/fbe1c41e-a86e-dab6-89c1-bece3b222bcf.png)
:::



### 4.CSV読み取り処理
スマレジに書き込むCSVファイルのデータは、こちらのデータを使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/07e632bf-bf9f-3711-bad5-d4d719ce836f.png)
※書き込むデータはスマレジの仕様に沿って会員情報を登録するのに必要な項目と値を揃えています。


ここからCSVファイルを読み取る処理を作成します。

「ツールパレット > ファイル > CSV > `ファイル読み取り`アイコン」をドラッグ＆ドロップするとポップアップが出てきます。

**CSVファイル読み取り処理**アイコン
名前：`csv読み取り`
ファイル：`/Personal/会員情報書き込み.csv`
※上記ファイルを指定して`列一覧の更新`を押下すると「列一覧」が書き込まれます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/eb40ec3f-b81e-bdf3-3e1c-66f763b090bc.png)



### 5.会員情報を登録

ここからは実際にHULFT Squareで会員情報を登録する処理を作成していきます。
「ツールパレット > ネットワーク > REST > `POST実行`アイコン」をドラッグ＆ドロップするとポップアップが出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/2196a61f-b0cd-c513-0622-5af8e21fa986.png)

➀「必須設定」タブ
接続先：`REST接続(スマレジ)会員情報(Personal)`
　　※「3.コネクションとアクセストークン取得処理」 のプラットフォームAPIです。
パス：`/<契約ID>/pos/customers`
　　※<契約ID>は[仕様書](https://note.com/smaregi_devtaro/n/n4344414aa2d4#:~:text=Tips%3A%20%E5%A5%91%E7%B4%84ID,%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82)に沿って事前にご自身のIDを設定しましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/59d3be92-2ed7-6404-4cfb-3ba33555aeee.png)

➁「リクエスト設定」タブと「レスポンス設定」タブ
標準では「XML」になっているので「Json」に変えてください

➂「ヘッダ設定」タブ
リクエストヘッダに下記を登録
`Authorization`：`Bearer ${トークン}`
※「3.コネクションとアクセストークン取得処理」で設定したアクセストークンの値の変数を指定しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/8dd0d984-61c0-a140-ec12-bd2519c9c64a.png)





### 6.マッピング
#### 6‐1 スキーマの設定
まずは、スマレジの仕様に沿った出力項目を設定します。
HULFT Squareにはスキーマという機能があります。
これによりスマレジの仕様に合わせた会員情報のデータの入力項目をHULFT Squareに設定することが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ecdcda38-77ec-0353-374d-d7130d841e48.png)

:::note info
[スマレジの仕様書](https://www1.smaregi.dev/apidoc/#operation/createCustomers)
会員データの入力項目
```言語:Json
{
  "customerCode": "string",
  "customerNo": "string",
  "rank": "string",
  "staffRank": "string",
  "firstName": "string",
  "lastName": "string",
  "firstKana": "string",
  "lastKana": "string",
  "postCode": "string",
  "address": "string",
  "phoneNumber": "string",
  "faxNumber": "string",
  "mobileNumber": "string",
  "mailAddress": "user@example.com",
  "mailAddress2": "user@example.com",
  "mailAddress3": "user@example.com",
  "companyName": "string",
  "departmentName": "string",
  "managerialPosition": "string",
  "sex": 0,
  "birthDate": "2024-06-14",
  "pointExpireDate": "2024-06-14",
  "entryDate": "2024-06-14",
  "leaveDate": "2024-06-14",
  "pointGivingUnitPrice": "string",
  "pointGivingUnit": "string",
  "pinCode": "string",
  "passportNo": "string",
  "nationality": "string",
  "alphabetName": "string",
  "mailReceiveFlag": 1,
  "note": "string",
  "note2": "string",
  "favoriteList": "string",
  "browsingList": "string",
  "status": 0,
  "storeId": "string"
}
```
:::



#### 6‐2 mapperの設定
次にマッパーの設定をします。
「CSV読み取り ➡ execute_http_post」にドラッグ&ドロップするとmappingアイコンを追加出来るので
ダブルクリックで開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/e601e2e9-d23f-cbef-6616-b8839e6cc91c.png)

出力データ側の「execute_http_post」の項目をクリックし`リソースからスキーマ読み込む`を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/c5959fbf-f2a4-0e3f-a490-3e436567816d.png)

「ツールパレット > 文字列 > 基本 > `単一文字列`アイコン」をドラッグ＆ドロップするとポップアップが出てきます。

**単一文字列定数ロジック**アイコン
コメント：`object`
一行文字列：`object`
※こちらのアイコンは「root」の下の`type`に繋ぎます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a5b70373-02f4-07ac-f368-759b17899d4d.png)



最後に必要な項目を線でつなぎます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6d3f5a28-d074-c18e-1726-e7abf3e7b7d0.png)

今回はこちらのデータ項目をスマレジに登録します
<img width="290" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/81e01b2a-5d66-6b9f-3f20-724cbbeb6259.png">

:::note warn
[会員情報を登録する場合](https://help.smaregi.jp/hc/ja/articles/203428877-%E4%BC%9A%E5%93%A1%E6%83%85%E5%A0%B1%E3%82%92%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B)は**必須項目**は必ず繋ぐ必要があります。
予め決められている**必須項目**の他に、自分で**任意の項目を必須項目**に設定することが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/e2635085-019e-bf20-591d-d7782f6cc369.png)
:::


ここまでの処理でスマレジにデータを書き込むことが出来るようになりました。
現状の処理で実行するとデータが1件書き込まれるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/2769b966-27a0-c75a-7f89-7c7ee24a4acf.png)

:::note info
**会員情報登録API**(/customers)を使用した場合の処理結果はこのように一件のデータを書き込む仕様なります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/740de157-7547-2857-b7a5-8be4b8ea5f07.png)
複数のデータを登録したい場合、「会員一括登録API」(/customers/bulk)を使用する方法もあります。
**※[会員一括登録API](https://www1.smaregi.dev/apidoc/#operation/bulkCreateCustomers)**(/customers/bulk)**を使用する場合は仕様書をご確認ください**
:::

### 7.繰り返しデータ件数
今回は、複数件のデータを書き込みたいので、HULFT Squareの機能である[繰り返し(データ件数)](https://www.hulft.com/help/ja-jp/HULFTSquare/Content/Designer/Connector/flow_loop_by_number_of_data.htm)というロジックで4件のデータを件数分スマレジに書き込んでみます。

「ツールパレット > 基本 > フロー > `繰り返し(データ件数)`アイコン」をドラッグ＆ドロップし下記のように配置します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/9d71fff8-6042-bc98-f821-86fa7297b377.png)


### 8.実行結果確認
HULFT Square側で実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/74bfd971-45d4-b2f2-261c-6eedf02729df.png)

ログを確認すると正常に処理されたことが確認出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/fbafe4f8-c997-44ef-b412-45384150662b.png)

スマレジの画面を確認すると、4件のデータが正常に書き込まれたのが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/fece80d2-fde3-f36f-1de6-adc9f18b1d43.png)




# 最後に
いかがでしたでしょうか。今回は、スマレジの会員情報にCSVファイル形式のデータを登録してみました。
日本語での設定項目が多く、PythonやJavaなどと比べてコードを書かずに作成出来るため、繰り返し処理などがマウス操作で出来ます。
また、HULFT Squareは国産のSaaS製品やオンプレミス製品との連携実績も多いので、スマレジと他のシステムを連携させるのにも扱いやすいのではないでしょうか。
[**HULFT Squareについて知りたい方はこちら**](https://www.hulft.com/service/hulft-square)

ここまでお読みいただきありがとうございました。それでは、また！