Workato の 「Repeat for each」の 「Batch of items」の活用方法

# はじめに

Workato の「Repeat for each」の「Repeat mode」には通常使用する「One item at a time」の他に「Batch of items」というものがあります。これはどういったときに使用するのでしょうか？

Workato には複数のデータ行やレコードを効率よく処理するための[バッチ処理](https://docs.workato.com/features/batch-processing.html)という機能があります。「Batch of items」はこのバッチ処理と組み合わせて使用します。

この記事では、CSV ファイルの内容を SharePoint のリストに登録する例を通じて、具体的な使いかたをご説明します。


# CSVファイルの読み込み

あらかじめ、取り込みたい CSV ファイルと同じ列構造の SharePoint のリストを作成しておきます。取り込みたいCSV ファイルも SharePoint のドキュメントフォルダに格納しておきます。

準備が済んだら、Workato のレシピを作成します。

まず、SharePoint コネクターの「Download file from library」アクションで CSV ファイルのコンテンツを取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/9cbf99c3-1208-faff-4452-7c2131992ae8.png)

「CSV tools by Workato」コネクターの「Parse CSV」アクションで CSV の内容を解析します。
「CSV contents」にはダウンロードしたファイルの「Content」を設定します。
「Header schema」は「Use a sample CSV file」を利用して作成するのが簡単です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/26031f88-0e5f-2515-c08a-5747d1aa2654.png)

「Upload from device」を選択して、取り込みたい CSV ファイルをアップロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/40506c14-c815-bdf9-9f88-56ff6df3f11b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/6180998c-a0d9-4e1b-5da7-6948cb7b42d3.png)


「Next」をクリックして内容を確認します。

問題がなければ、「Generate schema」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/37ec6016-0c1c-d48e-8eb0-ad064f7ae2b9.png)


このとき、「Column delimiter」が空になることがありますので、その場合は「comma」を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/52f5e00d-01ae-be47-7199-0e3ef506326b.png)


# SharePointのリストへの登録

次に SharePoint コネクターを利用してデータを登録します。

SharePoint には「Create rows」というデータ登録をバッチ処理で行うアクションが用意されていますので、このアクションを利用します。
バッチ処理のアクションには Batch というマークがついていますので参考にしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/9805296f-24ea-2c4c-031a-fc0166fc51ef.png)


このアクションの説明を見ると、「SharePoint のリストに最大 200 行作成します」とありますが、CSV ファイルに 200 行以上ある場合はどうすればよいでしょうか？
こういったケースのために用意されているのが「Batch of items」になります。

アクションの追加を中止して、「Repeat for each」を追加します。

「Input list」には、「Parse CSV」の出力結果の「Lines」を指定し、「Repeat mode」には「Batch of items」を指定します。
「Batch size」には、先程のアクションで処理できる最大行数の「200」を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/34c91a4d-a4c3-5200-5bbc-052957f96b2b.png)

ループ内の「Select an app and action」で先程の SharePoint コネクターの「Create rows」アクションを指定します。
登録先のリスト名を選択し、「optional fields available」をクリックして、取り込み対象の列を表示させます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/209e6aa3-778d-7587-1143-d153e73446fa.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/3bee4ead-8211-d6b7-1864-30976c429ded.png)

「Batch source list」には、「Foreach」の「Batch」を指定し、各列には対応するフィールドを設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/86ed183d-8cc7-a212-8f84-ca290ae5ea9f.png)

「Test recipe」でレシピを実行すると、200 行以上あっても、CSV ファイルの内容がすべて SharePoint のリストに取り込まれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755136/13da10a2-b096-75c4-7a36-25046b5785d2.png)


# まとめ

まとめると、以下のようになります。

- 「Repeat for each」の「Batch of items」はバッチ処理のアクションと組み合わせて利用する
  - 「Batch size」にはバッチ処理がサポートする最大のレコード数を指定する
- バッチ処理のアクションを利用することで、複数のデータ行やレコードを効率よく処理することができる

# おわりに

この記事では、バッチ処理のアクションと「Repeat for each」の「Batch of items」を組み合わせる方法をご説明しました。

Workato で複数のデータをまとめて処理する必要がある場合、バッチ処理を利用することで、実行時間やタスク数を抑えることができます。

Workatoの導入・導入後の活用などでお困りの場合、Workatoリセラーにご相談する方法もございます。お困りごとがございましたら、認定リセラーの[日立ソリューションズ](https://www.hitachi-solutions.co.jp/rpa/sp/products/workato/?utm_source=sns&utm_medium=qiita&utm_campaign=["62c7358305be7869372a"])へ是非ご相談ください。

# 参考リンク

* 株式会社 日立ソリューションズ
    * [Workato ご紹介サイト](https://www.hitachi-solutions.co.jp/rpa/sp/products/workato/?utm_source=sns&utm_medium=qiita&utm_campaign=["62c7358305be7869372a"])
* Workato 公式サイト
    * [Batch processing](https://docs.workato.com/features/batch-processing.html)
    * [Repeat for each in batches](https://docs.workato.com/recipes/repeat-for-each.html#repeat-for-each-in-batches)
* 本記事のサンプルレシピ
    * JPデータセンター利用者向け
        * [[Example] Import from csv](https://app.jp.workato.com/recipes/442514?st=5286ce4fb1f28421239110eda41c9d15566d67b205848b1ed35eac2ab58b484a)
    * USデータセンター利用者向け
        * [[Example] Import from csv](https://app.workato.com/recipes/50376786?st=ae81b851bd584b1457eee4edc47e7091b9d8cad62fbe7f764c1d96ca21c96518)