LoginSignup
0
0

Workato:Google WorkspaceやOffice Onlineに頼らずに、Excel(xls, xlsx)ファイルを処理するには

Last updated at Posted at 2024-04-25

はじめに

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へ変換する処理が実装されています。

image.png

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ファイルの生成にも対応しています。用途に応じて最適なライブラリを選択いただくと良いと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0