【Alteryx Tips】Googleシート入力で複数のファイルを読み込む

AlteryxでGoogleシート入力で複数ファイル読み込みを行う方法

 

Googleシート入力は一度に1つのファイルしか読み込むことができません。しかしながら、通常のデータ入力ツールを使う際と同様に複数ファイルを一度に読み込みたいことがあると思います。本記事では、このような際にバッチマクロで読み込む方法をご紹介します。

 

Googleシート入力

 

バッチマクロのおさらい

まず最初にバッチマクロをおさらいします。

バッチマクロとは、コントロールパラメータでツールの設定を書き換えながら繰り返し実行するマクロです。よく使われるのが、スキーマの異なるインプットファイルを一気に複数読み込むような場合です。

 

例えば、このような形でデータ入力ツールのファイルパスを、コントロールパラメータに入力された値で書き換えることで一度に複数ファイルを読み込むことができます。

バッチマクロ

 

 

同様に、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シート入力と接続

アクションツールで書き換えることのできる項目を見てみましょう。Googleシート入力ツールで、通常の「接続」で行った場合、以下のような画面になります。

Googleシート入力の書き換え可能項目

これを抜き出すと、以下の項目がアクションツールで書き換えることができるということになります。

  • OAuth2Overrides
  • client_id
  • workbookID
  • forstRowContainsNames
  • worksheetID
  • workbookName
  • worksheetName
  • view
  • client_secret
  • refresh_token
  • accessToken

 

結論からいくと、workbookIDworksheetNameを書き換えることで、外部から読み込むシートを操作できます。

workbookNameやworksheetIDなどの項目がありますが、上の2つの項目が正解です。

 

実際にマクロを作成してみる

準備したデータは以下のようなものです。

準備したデータ

 

今回のバッチマクロでは複数のコントロールパラメータツールを使います。それぞれ、workbookIDとworksheetNameを入力し書き換える役割となります。

ワークフロー

 

アクションツールの設定をそれぞれ見てみます。

まず、「workbookID」入力用のコントロールパラメータと接続しているアクションツール(画像の①)の設定は以下のとおりです。

アクションツール設定1

アクションタイプは「値を更新」とし、画像の通り、「workbookID」を選択します。

 

同様に、「worksheetName」入力用のコントロールパラメータと接続しているアクションツールの設定(画像の②)は以下のとおりです。

アクションツール設定2

アクションタイプは「値を更新」とし、画像の通り、「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

Alteryxの導入はぜひKCMEで!

セルフサービスデータ分析ツール「Alteryx」は4週間無償トライアルが可能です。

製品に対する操作方法、技術的な質問などは導入前・導入後に関わらずメールにてお答えします。また、Alteryxを用いた環境構築、開発、ヘルプデスク対応、ハンズオン、トレーニング、ワークフロー作成なども承りますので、お気軽にご相談ください。

おすすめの記事