Qlik Trainingブログ

  • Qlik Cloud
  • Qlik Sense
  • 開発者
  • データロード
2024.06.27

複数のGoogleスプレッドシートを一括でQlik Sense SaaSのアプリに読み込みたい!

Qlik Sense SaaSのアプリに、Googleドライブ内の特定のフォルダにある複数のスプレッドシート ファイルを一括で読み込みたいということはありませんか?
そんな希望を叶えるには、ロード スクリプトでループ処理を行うことで、スプレッドシート ファイルを一括で読み込むことが可能です!
本記事ではその方法を紹介します。

目次

※本記事は「2024年06月時点のQlik Sense SaaS」で作成しています。

はじめに

■前書き
本記事内の説明では、シートとファイルを区別するため、Googleスプレッドシートのファイルを「スプレッドシート ファイル」、ファイル内のシートを「シート」と記載します。

■前提条件
以下2点の条件を満たす全てのスプレッドシート ファイルを読み込むことが前提です。

 1. 特定の同じフォルダに存在するスプレッドシート ファイル
 2. 同一のシート名を持つスプレッドシート ファイル

1. 特定の同じフォルダに存在するスプレッドシート ファイル

2. 同一のシート名を持つスプレッドシート ファイル

設定手順

以下のような手順で設定を行います。

<設定手順>
1) 以下ブログ記事の「Googleスプレッドシートへのデータ接続作成手順」の手順でデータ接続を作成します。
https://www.ashisuto.co.jp/qlik-training_blog/article/qlikgooglespreadsheet.html

2) [データ ロード エディタ]を開きます。

3) 手順「1)」で作成したデータ接続の一番左のアイコン([接続文字列を挿入]ボタン)をクリックし、「LIB CONNECT TO '~~';」のような接続文字列を挿入します。

4) Googleの共有ドライブのスプレッドシート ファイルを読み込む場合は、対象のドライブを開いた時のURLでドライブのIDを確認し、メモ帳やテキスト ファイルなどに残しておきます。
  マイドライブの場合はドライブのIDが与えられていないため、確認は不要です。

5) スプレッドシート ファイルが保存されているフォルダを開いた時のURLでフォルダのIDを確認し、メモ帳などに残しておきます。

6) 以下のようなロード スクリプトを記述します。変更必須の部分を★で示します。

//★手順「3)」で指定する接続文字列です。
LIB CONNECT TO '~~';

//ドライブのIDとフォルダのIDを指定して、読み込みたいスプレッドシート ファイルの「key」を取得します。
スプレッドシートキー:
SELECT key
FROM ListSpreadsheets
WITH PROPERTIES (
//★XXXXXXXXXの部分にドライブのIDを指定します。
//共有ドライブの場合は手順「4)」で確認したドライブのIDを指定し、マイドライブの場合は「driveId=''」と指定します。
driveId='XXXXXXXXX',
//★YYYYYYYYYの部分に手順「5)」で確認したフォルダのIDを指定します。
//「trashed = false」の記述により、ゴミ箱にあるファイルを除外します。
query='parents in ''YYYYYYYYY'' and trashed = false'
);

//FieldValueListを使用して「key」項目の値を変数v_Sheetkeyに設定し、For EachからNextまでの処理を「key」項目の値の分、繰り返し行います。
For Each v_Sheetkey in FieldValueList('key')

//変数v_Sheetkeyと一致するスプレッドシート ファイル内の、読み込みたいシートの「worksheetKey」を取得します。
ワークシートキー:
Load worksheetKey
//★読み込みたいシートのシート名を指定します。
//同一の文字列で始まる全てのシートを読み込みたい場合はワイルドカードとlike演算子を使用して「Where title like 'シート*'」のように記述します。

Where title='シート1';
SELECT worksheetKey,title
FROM ListWorksheets
WITH PROPERTIES (
spreadsheetKey='$(v_Sheetkey)'
);

Next;

//FieldValueListを使用して「worksheetKey」項目の値を変数v_worksheetKeyに設定し、For EachからNextまでの処理を「worksheetKey」項目の値の分、繰り返し行います。
For Each v_worksheetKey in FieldValueList('worksheetKey')

//変数v_worksheetKeyと一致するシートの、読み込みたい項目を取得します。
//★読み込みたい項目の項目名を指定します。
//項目名が読み込み対象のシートにより異なる場合は「Load *」「SELECT *」のように指定する必要があります。
Load [商品ID],[商品名];
SELECT [商品ID],[商品名]
FROM GetWorksheetV2
WITH PROPERTIES (
worksheetKey='$(v_worksheetKey)',
gidOverride='',
generatedNumberedColumns='false',
skipRows=''
);

Next;

//Drop Tablesを使用して不要なテーブルを削除します。
Drop Tables スプレッドシートキー,ワークシートキー;

7) [データをロード]でロードを行い、テーブルのチャートなどから意図したデータが読み込まれていることを確認します。

■解説
・ロード スクリプト記述例の中の「query」の条件にはGoogle Drive APIのクエリを指定します。Google Drive APIのクエリはQlik製品外の内容のため、クエリの意味などの詳細な内容はGoogle社の情報をご確認ください。

・「For Each .. Next」は、ループ処理を行います。ForからNextまでの間にあるロード スクリプトの処理が、リストの各値の分だけ実行されます。
「リスト」については、今回の「For Each 変数名 in FieldValueList('項目名')」の場合はFieldValueListにより、指定した項目の値のリストが生成されます。

さいごに

今回は、ロード スクリプトでループ処理を行うことで、特定のフォルダのGoogleスプレッドシート ファイルをQlik Sense SaaSのアプリに一括で読み込む方法を紹介しました。
この方法で効率的にファイルを読み込むことができます。ぜひ試してみてください!

関連している記事

  • Qlik Cloud
  • Qlik Sense
  • QlikView
  • 開発者
  • データロード
2025.01.22

先行ロードを使用してスクリプトを短くまとめよう!

先行ロードの機能を使用すると、すぐ下に記載されたLOAD文の結果をデータソースとして、上のLOAD文で使用することができます。

  • Qlik Cloud
  • Qlik Sense
  • 開発者
  • 可視化・分析
2024.12.27

テーブルで任意の列や行を表示できるようにしたい!

テーブルに表示する列や行を、ユーザーが選択できるようにする方法をご紹介します!

  • Qlik Cloud
  • 運用者
  • その他
2024.12.24

モニタリングアプリで現状をチェックしてみよう-Qlik Cloud編

Qlik Senseでは運用状況を効率的に把握するための 便利なモニタリングアプリが用意されています。 モニタリングアプリの使い方をご紹介いたします。

ページの先頭へ戻る