HULFT SquareとGraphAPIでSharePointOnlineのリストへ接続(後半：リストへデータを格納)

## はじめに
今回はHULFT SquareとMicrosoft GraphAPIを使ってSharePointOnlineのリストに接続し、データの取得と格納をしてみます。HULFT Squareでは、SharePointOnlineに接続する専用コネクタがありますが、こちらはSharePointOnline上のドキュメント操作に適したもののため、リストの操作はできません。そのため今回はGraphAPIを用いてリストへ接続します。前半の記事ではリストからデータを取得しました。後半の本記事では取得したデータをリストに格納します。

前半　⇒　[HULFT SquareとGraphAPIでSharePointOnlineのリストへ接続(前半：リストからデータを取得)](https://qiita.com/Ma_Ohno/items/ab160e5b00bc21ef41e6)

## 今回行う接続
今回はSharePointOnlineのリストへ読み書きするために、下記接続を試みます。リストからデータを取得し、HULFT Squareでデータ加工を行った後、再度リストに格納します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/bc2e9af6-37db-4915-9f6d-e0e9a781c770.png)

# リストとの連携をするために必要な設定
### Azure Portal側の作業
１．Microsoft Azure Entra IDでアプリの登録
### HULFT Square側の作業
２．OAuth認証のコネクション設定
３．RESTコネクタの設定
４．リストからデータ取得
５．リストへデータ格納　←本記事ではここを記載

### ５．リストへデータ格納

#### ５－１．POSTアイコンの設定
HULFT Squareのデザイナー画面を開き作成します。今度はRESTのPOSTアイコンを配置し下記のように設定します。
➀「必須設定」タブ
接続先：`「作成したRESTコネクション」　※「前半記事 3.RESTコネクタの設定」 `
パス：`/sites/${var_サイトID}/lists/${var_リストID}/items ※${var_サイトID}、${var_リストID}はスクリプト変数を作成し、それぞれ「サイトID」、「リストID」を入れてください`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/aa17128d-4e54-455a-9902-f57ec2bdf30f.png)

②「リクエスト設定」タブ
データ出力先：`データ` 
データ形式：`JSON`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/0ca77393-6e95-4cea-90a4-acf1abe86ce1.png)

③「認証設定」タブ
認証：`Authコネクション利用` 
接続先：`「作成したOAuth認証のコネクション」　※「前半 2.OAuth認証のコネクションの設定」`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/7fa6db9d-88cd-472e-b20d-0273d887ad42.png)

５－２．スキーマへ登録
次に読み取ったリストのデータの形式と、格納するリストのデータ形式をスキーマに登録します。読み取ったリストの形式は、「リスト取得」のアイコンの「レスポンス設定」でファイルに書き出すように変更することで、簡単に取得することが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/750c8992-8106-4f52-b70e-74dea82d6fe4.png)
このJSONをそのままスキーマとして登録します。HULFT Squareのスキーマ登録画面から下記のように登録します。

名前：`[任意の名前]` 
ワークスペース：`[任意のワークスペース]` 
タイプ：`Json` 
接続先：`[上記JSONをそのまま貼り付け]`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/bbd96fa4-2508-4268-8894-f8a63e575651.png)

次にリストにデータを格納するために、GraphAPIの「リクエスト」の形式となるスキーマを登録します。この設定では、リストにどういった項目があるのかを定義する必要があります。今回は前回と同じく下記のリストにデータを格納します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/8abf2973-3436-4bb5-b2dd-a02dfb6bdb3a.png)

こちらに表示されている「タイトル」、「氏名」、「ふりがな」という項目とは別に、内部的に項目ごとに「フィールドID」が設定されています。確認するためにリストの画面右上の「歯車マーク」から「リストの設定」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/6307154e-766b-4bb9-8718-a20957c5e58d.png)
その中の「列」という項目に、「タイトル」、「氏名」、「ふりがな」という項目があり、各項目名をクリックします。例えば、「タイトル」をクリックした場合、下記のような画面に遷移します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/0ce53ad0-5ffb-4fbe-85f2-bb9e331fd4ff.png)
この時のURLの末尾に「Field=Title」のように「Field=」の後ろに表示されているものが「フィールドID」です。今回はこちらの「フィールドID」を利用するため各項目のそれぞれ値を控えておいてください。今回は「タイトル」が「Title」、「氏名」が「_x6c0f__x540d_」、「ふりがな」が「_x3075__x308a__x304c__x306a_」となっておりました。表示名の変更をしていない場合は、日本語がUnicodeのコードポイントを16進数で表したものになっています。これを下記のようにJSON形式にしながらスキーマへ登録します。各要素の中身のデータ(「Title」で言えば、「"test"」の部分）は型が適切であれば適当で構いませんが、文字列型の場合は「"」でくくります。数値型の場合は、「"」は不要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/f69211b1-53fd-4c23-8752-253f7eb3805b.png)

<details open><summary>JSON定義の設定内容</summary>

```rb
{
  "fields": {
    "Title": "test",
    "_x6c0f__x540d_": "田中正",
    "_x3075__x308a__x304c__x306a_": "タナカタダシ"
  }
}
```
デザイナ画面に戻り、「４．リストからデータ取得」で作成した「REST GET実行アイコン」と先ほど作成した「REST POST実行アイコン」を線で繋ぎ、mappingアイコンを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/eb7c06b0-d619-4bbb-a94c-e2fa7af6a275.png)
mappingアイコンを開き左右の「リスト取得」、「リスト追加」をそれぞれ右クリック「リソースからスキーマを読み込む」で各スキーマを適応します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/aa9cad89-1f29-4b30-b6d2-6401cdae3ec5.png)

次は線を引っ張っぱります。今回はリストから取得したものを再度リストに追加します。変更されていることがわかるように元々は「カタカナ」だった「ふりがな」を「ひらがな」に変換します。変換アイコンを配置し、線を引きます。またHULFT Squareでは型（type）を指定していないものは「文字列型」になるので、「文字列型」以外の場合は指定する必要があります。今回では、「fields」は「object型」のため、「文字列」-「基本」-「単一文字列定数」を使い、「object」という文字列を「fields」の「type」に繋げます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/46d5541b-5951-44a2-8ce2-7a03a615a129.png)
mappingの設定が完了しましたら実行します。問題なく実行できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/c3135ea7-7752-42f0-904a-6d8d57f3643c.png)
リストの画面上で「ふりがな」が「ひらがな」になったデータが登録されていることを確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4068471/09d3ff83-9ef7-44ac-ad95-29c73b4d0a5e.png)

# 最後に
いかがでしたでしょうか。前半の記事ではSharePointOnlineのリストのデータを取得し、後半の本記事ではリストにデータを書き込みました。他のデータベースやSaaS製品とSharePointのリストを連携させることで活用の幅が広がるのではないでしょうか。
ここまで読んでいただきありがとうございました。
[HULFT Squareについて知りたい方はこちら](https://www.hulft.com/service/hulft-square)