AlteryxでGoogleシート入力で複数ファイル読み込みを行う方法
Googleシート入力は一度に1つのファイルしか読み込むことができません。しかしながら、通常のデータ入力ツールを使う際と同様に複数ファイルを一度に読み込みたいことがあると思います。本記事では、このような際にバッチマクロで読み込む方法をご紹介します。
バッチマクロのおさらい
まず最初にバッチマクロをおさらいします。
バッチマクロとは、コントロールパラメータでツールの設定を書き換えながら繰り返し実行するマクロです。よく使われるのが、スキーマの異なるインプットファイルを一気に複数読み込むような場合です。
例えば、このような形でデータ入力ツールのファイルパスを、コントロールパラメータに入力された値で書き換えることで一度に複数ファイルを読み込むことができます。
同様に、Googleシートも一気に読み込みたいシートのURLがわかっていれば、そのリストをもとにコントロールパラメータツールでGoogleシート入力ツールのURLを書き換えながら実行することで一度に複数のシートを読み込めるはずです。
GoogleシートのURLの構造を見てみる
それでは、GoogleシートのURLをよく見てみましょう。
Googleシートにアクセスすると、中身にアクセスすることができますが、URLは以下のようになっています。
https://docs.google.com/spreadsheets/d/[XXXXXXXXXXXXXX]/edit#gid=[YYYYYYYY]
このうち、[XXXXXXXXXXXXXX]の部分がブック固有のIDで、最後の方にある「gid=」のあとにある[YYYYYYYY]がシートのIDとなっています。
ここでは、ブック固有のIDを覚えておきましょう。
Alteryxのアクションツールで書き換えられる項目を確認してみる
次に、Googleシート入力ツールを詳しく見ていきます。Googleシート入力ツールのパラメータを書き換えることでバッチマクロに仕上げていく必要があるためです。
まず、コントロールパラメータ入力、アクションツールとGoogleシート入力ツールを接続します。
アクションツールで書き換えることのできる項目を見てみましょう。Googleシート入力ツールで、通常の「接続」で行った場合、以下のような画面になります。
これを抜き出すと、以下の項目がアクションツールで書き換えることができるということになります。
- OAuth2Overrides
- client_id
- workbookID
- forstRowContainsNames
- worksheetID
- workbookName
- worksheetName
- view
- client_secret
- refresh_token
- accessToken
結論からいくと、workbookIDとworksheetNameを書き換えることで、外部から読み込むシートを操作できます。
workbookNameやworksheetIDなどの項目がありますが、上の2つの項目が正解です。
実際にマクロを作成してみる
準備したデータは以下のようなものです。
今回のバッチマクロでは複数のコントロールパラメータツールを使います。それぞれ、workbookIDとworksheetNameを入力し書き換える役割となります。
アクションツールの設定をそれぞれ見てみます。
まず、「workbookID」入力用のコントロールパラメータと接続しているアクションツール(画像の①)の設定は以下のとおりです。
アクションタイプは「値を更新」とし、画像の通り、「workbookID」を選択します。
同様に、「worksheetName」入力用のコントロールパラメータと接続しているアクションツールの設定(画像の②)は以下のとおりです。
アクションタイプは「値を更新」とし、画像の通り、「worksheetName」を選択します。
次に、Googleシート入力後のワークフローを見ていきましょう(下図の赤い部分)。
異なるスキーマのファイルを読み込んだ場合でも復元できるようにしています。
まず、各ファイルを読み込んだ際にフォーミュラツールで読み込んだ回数を取得します。[Engine.IterationNumber]というパラメータをここでは使っていますが、これはマクロの繰り返し回数が出力されるパラメータです。
その後、レコードIDツールで、各レコードごとにIDをふります。
その次に、転置ツールですべてのデータを縦持ちにします。設定としては以下のとおりです。
これにより、赤枠のFileNoとRecordIDのみがキー列として残ります。
つまり、以下のようになります。
どのシートを読み込んでも、転置によってRecordIDとFileNo、そしてNameとValueのみがマクロの出力に渡されるようになるため、マクロから出ていくデータはすべて同じスキーマになります。
このデータは以下のような形で復元が可能です(シートごとに取り出す必要がありますが)。
マクロの直後にフィルタツールを配置し、FileNo=0、つまり最初に読み込んだシートのデータを取り出します。その後、以下のようにクロスタブツールを設定することで復元できます。
グループ化:FileNoとRecordID
列ヘッダー:Name
新しい列の値:Value
値の集計方法:連結
このような形で復元できます。
もし読み込んだデータがすべて同じスキーマであれば、フィルタツールは使う必要がありません。
まとめ
- Googleシート入力ツールをバッチマクロ化しました
- スキーマが異なるシートも元のまま復元できるワークフローをご紹介しました
Alteryx Designer 2022.1.1.25127 時点の情報です。
written by AkimasaKajitani