はじめに
Workatoで、Excel(xls, xlsx)ファイルを処理したい場合は、Google SheetsコネクタやExcelコネクタを利用すると簡単に扱うことが出来ます。
これらのコネクタの利用にあたっての前提として、Google Sheetsコネクタの場合はGoogle Workspace、Excelコネクタの場合はMicrosoft 365、それぞれの契約が必要となります。
しかし、それらのサービスを契約していない場合や、(Workato以外の)クラウドサービスに渡したくないファイルを処理したい場合は、次の手順にて、Google WorkspaceやMicrosoft 365などのクラウドサービスを利用せずにExcelファイルをWorkato上で処理することが可能となります。
手順
過去に紹介した内容
クラウドサービスに頼らずxlsx形式のファイルをWorkato上で処理する方法として、2021年に以下の記事を公開しています。
今後においては、この方法ではなく、後述するPythonコネクタによる方法で対応されることをお勧めします。
この記事による方法は、Workatoの標準機能だけでノーコードでxlsxファイルを処理することが可能ですが、その反面、処理は複雑かつ実行時のタスク数も多めになります。
※タスク数の増加はWorkatoの運用コストの増加につながるため、いかに少ないタスク数で効率よく処理をまとめることが、Workatoを運用する上でのポイントの1つになります。
Pythonコネクタによる方法
以前は上記の手順を含め、限られた選択肢しかありませんでしたが、Pythonコネクタの登場により、現在ではローコードでありながらも、よりシンプルな方法でExcelファイルが処理できるようになっています。
また、Workato上のCommunity Libraryにて、Pythonコネクタを利用してExcelファイルを処理するCommunity Recipe(以下)が公開されています。レシピの実装にあたっては、こちらのレシピを参考に実装を進めていくと良いでしょう。
USDC(米国データセンター利用の方はこちら)
USDC(日本データセンター利用の方はこちら)
Community Recipeの解説
このCommunity Recipeでは、Step4にExcel(xls, xlsx)からCSVへ変換する処理が実装されています。
Step 4はPythonコネクタで実装されており、コードは次のようになっています。
import pandas as pd
import base64
import io
def main(input):
file_content = input['file_content']
sheet_name = input['sheet_name']
message_bytes = base64.b64decode(file_content)
#Excel File to memory - io — Core tools for working with streams
toread = io.BytesIO(message_bytes)
#Read the Sheet
read_file = pd.read_excel(toread, sheet_name=sheet_name)
#convert csv
csv = read_file.to_csv(path_or_buf=None,index=False, header=True)
return {'csv': csv}
変換処理はPandas(データ解析ライブラリ)の機能を利用して実現されています。Pandasの read_excel メソッドにExcelファイルを読ませる際、通常はファイルを指定しますが、WorkatoではIOライブラリの BytesIO メソッド(オンメモリストリーム)で対応します。
なお、WorkatoではPython3.9以降に含まれる標準ライブラリと、Pandasを含めいくつかのライブラリに対応しています。
- bcrypt
- lxml
- msoffcrypto
- NumPy
- openpyxl
- pandas
- Pytz
- requests
- xlrd
また、今回紹介したCommunity LibraryではPandasを用いてExcelファイルを処理していましたが、openpyxlやxlrdでも同様に対応が可能ですし、openpyxlやxlrdはExcelファイルの読み込みだけでなく、Excelファイルの生成にも対応しています。用途に応じて最適なライブラリを選択いただくと良いと思います。