Spreadsheets
Spreadsheets ドキュメント
Table of contents
Qlik 用 Spreadsheets Extension
ダウンロードとインストール
Qlik Sense Desktop
Qlik Sense Desktop に Spreadsheets Extension をインストールするには、次の手順を実行します。
- Qlik Sense 用の Spreadsheets Extension をダウンロードします。
- アーカイブを解凍します。
- Windows エクスプローラーのウィンドウを開き、Qlik Sense Extensions ディレクトリに移動します:
..\Users\<UserName>\Documents\Qlik\Sense\Extensions. - anychart-4x-spreadsheets フォルダを Extensions ディレクトリにコピーします。
- Qlik Sense Desktop を再起動します。
Qlik Sense Server
Qlik Sense サーバーに Spreadsheets Extension をインストールするには、
- Qlik Sense 用の Spreadsheets Extension をダウンロードします。
- Qlik Management Console (QMC) を開きます:https://<QPS server name>/qmc
- QMC スタートページまたは Start ドロップダウンメニューから Extensions を選択します。
- アクションバーの Import をクリックします。
- ダイアログで、ダウンロードしたアーカイブを選択します。パスワード欄は空のままにします。
- ファイルエクスプローラーウィンドウで Open をクリックします。
- Import をクリックします。
Qlik Sense Cloud
Qlik Sense Cloud に Spreadsheets Tree Extension をインストールするには、次の手順を実行します。
- Qlik Sense Cloud 用の Spreadsheets Extension をダウンロードします。
- アーカイブを解凍します。
- Management Console にアクセスします:
- テナントアドレスに /console を追加します:https://<your tenant address>/console
- または、ハブのユーザープロファイルの下にあるナビゲーションリンク Administration を使用します
- Extensions ページに移動し、Add をクリックします。
- ダイアログで、バンドル内の Extension を含むアーカイブを選択します(例:anychart-4x-spreadsheets.zip)。
- Add をクリックします。
- 上記の手順を繰り返して、他の Extension を追加します。
- Management Console で Content Security Policy セクションに移動し、Add をクリックします。
- ダイアログで、Content Security Policy に名前を付けます(例:AnyChart)。
- オリジンサーバーのアドレスを入力します:qlik.anychart.com
- 以下のディレクティブを選択します:
- connect-src
- font-src
- img-src
- script-src
- style-src
- Add をクリックします。
概要
AnyChart Spreadsheets は、Excel のようなパワフルなテーブル編集体験を Qlik Sense に直接提供します。ネイティブな Excel 関数、豊富な書式設定、マルチシート構成、およびインタラクティブなデータ探索をサポートすることで、この Extension は、フル機能のスプレッドシートのような柔軟性を持ってデータを操作・分析することを可能にします。
Spreadsheets Extension の実体験を得るには、Quick Start セクションをご覧ください。
Quick Start
基本的なテーブルの作成
このチュートリアルでは、基本的な Spreadsheets ビジュアライゼーションをゼロから作成する手順を説明します。
ビデオウォークスルー
ステップ 1:空のビジュアライゼーションを追加する
- Qlik Sense アプリで、Assets Panel に移動します。
- Custom objects > AnyChart 4 に移動します。
- Spreadsheets ビジュアライゼーションをシートにドラッグします。
ステップ 2:Autosave をオンにする
- ビジュアライゼーションを選択し、Properties Panel を開きます。
- Settings -> Autosave セクションに移動します
- Browser IndexedDB ストレージオプションを選択します
ステップ 3:Data Section を追加する
- Data セクションに移動します。
- Add ボタンをクリックして新しい Data Section を作成します。
- 新しく作成された Data Section を選択します。
- Create synced sheet トグルがオンになっていることを確認します。
- Edit data をクリックし、Data を選択します。
- 目的の Columns を追加します。

これらのステップを完了すると、ビジュアライゼーションには以下が含まれます:
- 1つの空のシート:Sheet1
- Data Section からデータが入力された1つのシート:DataSheet1

ステップ 4:スプレッドシートの書式設定
- 空のシートを削除します:
- Sheet1 を右クリックし、Delete を選択します。
- 残りのデータシートにテーブルを作成します:
- データが含まれるすべてのセルを選択します。
- リボンメニューの INSERT セクションに移動します。
- Table をクリックし、ポップアップウィンドウで確定します。
- 書式の調整:
- 必要に応じて列と行のサイズを変更します。
- HOME タブを使用してフォントスタイルをカスタマイズします。
- ヘッダーセルを選択し、Font Alignment の下にある配置ツールを使用します。

ステップ 5:チャートの追加
- データが含まれるすべてのセルを選択します。
- リボンメニューの INSERT タブに移動します。
- Insert Chart をクリックし、データに合ったチャートタイプを選択します。
- OK をクリックします。
チャートをシートの好きな場所に配置します。
オプション:スプレッドシートを Excel にエクスポートする
Excel などの別のツールで作業を続けたい場合:
- リボンメニューの FILE タブに移動します。
- Export をクリックします。
- Excel file オプションを選択します。
- Save Flags を使用してエクスポート設定を構成します。
- Export Excel File ボタンをクリックします。
- ポップアップウィンドウでファイル名を指定し、OK をクリックします。
その後、ダウンロードが自動的に開始され、.xlsx ファイルが Excel や互換性のあるソフトウェアで開く準備が整います。
既存の Excel テンプレートを使用する
このガイドでは、Qlik Sense で AnyChart Spreadsheets Extension を使用して、Excel テンプレートを完全にインタラクティブでデータ駆動型のスプレッドシートに変換する方法を説明します。
ビデオウォークスルー
前提条件
- AnyChart Spreadsheets Extension がインストールされた Qlik Sense アプリ
- テンプレートファイル: personal-bundet.xlsx
ステップ 1:Qlik へのデータのロード
- personal-budget.xlsx ファイルを Qlik アプリの Attached Files にアップロードします。
- Data Load Editor を開き、次のスクリプトを使用して Budget および Transactions テーブルをロードします:
LOAD
Category,
Budget
FROM [lib://AttachedFiles/personal-budget.xlsx]
(ooxml, embedded labels, header is 3 lines, table is Budget)
Where Upper(Trim(Category)) <> 'TOTAL';
LOAD
"Date",
Description,
Category,
Amount
FROM [lib://AttachedFiles/personal-budget.xlsx]
(ooxml, embedded labels, header is 1 lines, table is Transactions); - Load Data をクリックします。
ステップ 2:Spreadsheets Extension の追加
- Qlik アプリで新しいシートを作成して開きます。
Edit Mode に入ります。 - Custom Objects > AnyChart セクションから、Spreadsheets Table ビジュアライゼーションをキャンバスにドラッグします。
ステップ 3:Autosave をオンにする
- ビジュアライゼーションを選択し、Properties Panel を開きます。
- Settings -> Autosave セクションに移動します
ステップ 4:Excel テンプレートをインポートする
- ビジュアライゼーションを選択した状態で、リボンメニューの FILE タブに移動します。
- Import Excel File をクリックします。
- personal-budget.xlsx ファイルを選択します。
テンプレートには2つのシートが含まれています:
- Budget シート
- Transactions シート
ステップ 5:Data Section の作成
- Properties Panel を開き、Data タブに移動します。
- Add をクリックして最初の Data Section を作成します:
- Dimension を追加:
- Category
- Measure を追加:
- Sum(Budget)
- Sum(Amount)
- Sum(Budget) - Sum(Amount)
- Dimension を追加:
- もう一度 Add をクリックして、2番目の Data Section を作成します:
- Dimension を追加:
- Date
- Description
- Category
- Measure を追加:
- Sum(Amount)
- Dimension を追加:
- Measure ラベルをカスタマイズします(例:Sum(Amount) を Amount に変更)。
ステップ 6:Qlik データ用のテンプレートを準備する
- スプレッドシートビューで各シートに切り替えます。
- Qlik データが注入される場所の静的なセル値をクリアします。
- リボンを使用してそれらのセルの書式を General に設定します(これは関数が正しく機能するために重要です)。
ステップ 7:QLIK.DATA 関数を挿入する
Budget シート
- 予算テーブルの開始セル(例:A4)に次を入力します:
=QLIK.DATA(0,,,TRUE,”TOP”)
これにより、最初の Data Section からデータが取得され、ラベルと合計の両方が有効になります。
- データセル(例:Budget、Amount、Difference 列)を Currency としてフォーマットします。
Transactions シート
- トランザクションテーブルの開始セル(例:A2)に次を入力します:
=QLIK.DATA(1,,,TRUE)
これは2番目の Data Section を使用し、ラベルを表示します。
- Date 列を Short Date 、Amount 列を Currency としてフォーマットします。
ステップ 8:最終的なフォーマットと保存
- 最終的なフォーマット調整を行います。
- リボンの USER タブをクリックし、Save to app を選択して変更を保存します。
結果
これで、以下を組み合わせた完全にインタラクティブなスプレッドシートが作成されました:
- 使い慣れた Excel レイアウト
- ライブな Qlik データ
- QLIK.DATA を使用した動的な計算
デモ
近日公開予定。
シート
Spreadsheets Extension は、Excel と同じように複数のシートにまたがる作業をサポートしており、ワークブックの論理的なレイヤーにわたってデータ、計算、レイアウトを整理することができます。
各シートには、以下の混合を含めることができます:
- 静的な値 — 手動で入力されたテキストまたは数値。
- 関数 — 他のセル、範囲、または計算への参照を含む。
- データリンクされたセル — Qlik データまたは QLIK 関数から動的に入力されます。
シートは完全に独立しています:
- シートごとに異なるレイアウトやデザインを使用できます。
- 各シートには異なるハイパーキューブデータを表示することも、何も表示しないこともできます。
- あるシートの構造や書式が別のシートに干渉することはありません。
シート間参照
Excel と同じように、SheetName!CellReference 形式を使用して他のシートのセルを参照できます。
例: =Sheet2!A1
この関数は、Sheet2 という名前のシートのセル A1 から値を取得します。
これにより、集計シートの作成、値の集計、または複数のシート出力を組み合わせたダッシュボードの構築が容易になります。
シートの名前変更やタブの並べ替えは自由に行うことができ、ワークブック構造の設計に柔軟性を提供します。
データ
Spreadsheets Extension は、Qlik の連想エンジンを柔軟で Excel のような編集環境に統合するデータモデルを導入しています。このセクションでは、Extension 内で Qlik データがどのように構成されているか、およびそれをスプレッドシートのコンテンツに接続する方法について説明します。
Data Sections
Data Section は、Qlik の Dimension と Measure から構築された再利用可能なデータセットを定義します。これらは、Qlik と Spreadsheets キャンバスの間の架け橋として機能します。
Data Section の概要
- Data Section は Columns で構成され、各列は Qlik の Dimension または Measure です。
- Columns の順序はカスタマイズ可能です。
- Data Section は Spreadsheets Extension の Properties Panel から管理されます。
- 各 Data Section はシートやテーブル間で再利用でき、複数の接続モードをサポートしています(Connecting Data Sections を参照)。
合計 (Totals)
各 Data Section は、Measure 列ごとの自動合計をサポートしています:
- Data Section 構成の Presentation タブから合計を有効にします。
- 設定:
- 位置:Top / Bottom / None
- ラベル:テキストのカスタマイズ(例:「Total」、「Summary」)
合計は Qlik によって計算され、選択内容に基づいて動的に更新されます。
Columns
Data Section の各列は、ネイティブな Qlik テーブルのフィールドと同様に、Qlik の Dimension または Measure を表します。列は、Qlik エンジンからの実際の値を表示するためにスプレッドシートにレンダリングされます。
デフォルトでは、列は追加された順序(上から下)で、シートの左上隅または割り当てられたデータ領域からレンダリングされます。
範囲 (Range)
オプションで各列の範囲を指定して、その値がシートのどこに表示されるかを正確に制御できます。
- 例(垂直):C1:C5 は列の値をセル C1 から C5 に配置します。
- 例(水平):C3:H3 は行3にわたって水平にセルを入力します。
定義された範囲内に収まる値のみが表示されます。使用可能なセルよりも多くの値が存在する場合、列は自動的に切り捨てられます。
データ範囲がシート内に収まることの確認
列にカスタム範囲(垂直(例:C1:C10)または水平(例:C3:H3))を使用する場合、スプレッドシートにデータを表示するのに十分なスペースがあることを確認することが重要です。
レンダリングされるデータは、表示されている行数と列数によって定義される現在のシート範囲内に収まる必要があります。指定された列範囲がこれらの制限を超えると、一部のデータが切り取られたり、正しくレンダリングされなかったり、予期しない動作が発生したりする可能性があります。
シート寸法の調整
このような問題を回避するために:
- リボンメニューの Settings タブに移動します。
- Sheet Settings の下の General を選択します。
- 必要に応じて Row Count や Column Count を増やします。

既知の動作と制限事項:
- Scrolling:範囲設定はスクロール動作に影響を与える場合があります(Scrolling セクションを参照)。
- Offsets:異なる列に異なる開始位置(例:A1、B5、C10)がある場合、データのロードとスクロールは最初の列のオフセットに基づいて調整されます。
- Mixed Offsets:不均一な開始点(A3、C5、E7 など)を使用すると、データのロード中に隙間が生じたり予期しないレンダリングが発生したりすることがあります。
- Data Loading:初回ロードおよびスクロールによってトリガーされるロードでは、取得する行数を計算する際に常に最初の列のオフセットが尊重されます。
Data Section の接続
Data Section が定義されると、主に3つの方法でスプレッドシートに接続できます:
Data Section の概要
各接続方法は、自動化と制御のバランスが異なり、特定の長所と短所を持つさまざまなユースケースに適しています:
| 方法 | ユースケース | 制御 | 最適: |
| Synced Sheet (デフォルト) | 新しいシートにデータを自動入力する | 低 | クイックプレビュー、1セクション/シート |
| Table Binding | Data Section をスプレッドシートのテーブルにリンクする | 中 | 表形式のデータビュー、固定レイアウト |
| QLIK 関数 | 関数を介して手動でデータを挿入する | 高 | カスタムテンプレート、高度なレイアウト |
Create Synced Sheet
- Data Section を追加する際の "Create Synced Sheet" トグルを介して有効になります。
- セクションラベルにちなんで名付けられたシートを自動的に作成し、データを注入します。
- 高速なイテレーションや新しいデータ構成のテストに適しています。
🛈 Data Section が変更されると、シートは自動的に更新されます。
Table Binding
Data Section をスプレッドシート内の既存のテーブルに直接バインドします。
ステップ:
- スプレッドシートビューでテーブルを選択します。
- リボンメニューの Table Design タブに移動します。
- Select Source ドロップダウンを開きます。
- Data Section を選択します。
テーブルには選択したセクションのデータが自動的に入力され、列は順番にマップされます。
これは、あらかじめデザインされたレイアウトや、ライブな Qlik データに対して構造化テーブル関数、書式設定、チャートなどの Excel 機能を使用したい場合に最適です。
QLIK 関数
パワーユーザーは、Qlik 対応の関数を使用して手動でデータを注入できます。これにより、レイアウトとロジックを完全に制御できます:
- QLIK.DATA() – データブロックを注入
- QLIK.DATA.LABEL() – 列ラベルを挿入
- QLIK.DATA.TOTAL() – 合計行の値を挿入
上記のデータバインディング関数に加えて、QLIK.EXPRESSION() 関数を使用すると、スプレッドシート内で任意の Qlik 式を直接評価でき、Qlik での選択内容の変更を動的に反映できます。
🛈 注:これらの関数はライブな Qlik データによって駆動されるため、Qlik アプリでの更新(例:フィルター、選択、または基礎となるデータの変更)は即座にスプレッドシートに影響します。これにより、入力されるセルの数が増減する可能性があるため、それに応じてレイアウトを計画してください。
詳細な構文と例については、Qlik 関連の関数 セクションを参照してください。
Qlik の選択 (Selections)
スプレッドシートが Data Section に基づいて構築されている場合、Qlik での選択に動的に応答します。
Spreadsheet Extension から直接 Qlik の選択を行うこともできます。
Spreadsheet から選択を適用する方法
- フィルターしたいセルを選択します。
- 選択範囲を右クリックします。
- コンテキストメニューから Qlik Select を選択します。

Spreadsheets Extension は有効な選択を自動的に検出し、Qlik アプリに適用します。
Excel 関数
この Extension は、以下を含むほとんどのネイティブな Excel 関数をサポートしています:
- 数学と三角関数:SUM, AVERAGE, ROUND, INT
- 論理関数:IF, AND, OR, NOT
- テキスト関数:CONCATENATE, LEFT, RIGHT, TEXTJOIN
- 検索/行列関数:VLOOKUP, INDEX, MATCH
- 日付と時刻関数:TODAY, NOW, DATEDIF, EOMONTH
- 配列関数:UNIQUE, SORT, FILTER
など。
リボンメニューの Formulas セクションで、使用可能な Excel 関数の完全なリストを自由に探索してください。

Qlik 関連の関数
Spreadsheets Extension は、Data Section との対話、値・ラベル・合計の抽出、またはスプレッドシートのセル内で直接式を評価することを可能にする、一連の Qlik 固有の関数をサポートしています。
各関数は非同期で実行され、Qlik の連想モデルに基づいて動的な値を返します。
QLIK.DATA
事前構成された Data Section からデータ値を取得して挿入します。
= QLIK.DATA(data_section_label_or_index, [column_label_or_index], [is_horizontal], [show_label], [show_total], [limit])
引数:
- data_section_label_or_index – Data Section のラベルまたはインデックス。
- column_label_or_index – (オプション)列(Dimension または Measure)のラベルまたはインデックス。
- is_horizontal – (オプション)true の場合、データは垂直方向ではなく水平方向に入力されます。
- show_label – (オプション)true の場合、列ラベルが含まれます。
- totals_position – (オプション、Enum)合計値を挿入するかどうか、およびどこに挿入するかを制御します。
- "INHERIT" – Qlik パネル(定義セクション)で定義された合計設定を使用します。
- "TOP" – 合計値をデータ範囲の上に挿入します。
- "BOTTOM" – 合計値をデータ範囲の下に挿入します。
- "NONE" (デフォルト) – 合計は挿入されません。
- 🛈 無効な値は "NONE" として扱われます。
- limit – (オプション)Data Section から取得する行(または水平の場合は列)の最大数を設定します。これは Data Section で制限を設定するのとは異なります。これは行数に対するハードリミットです。Measure に対して適切な制限が必要な場合は、Data Section の制限を使用してください。
ユースケース:
- Qlik データを特定のスプレッドシート領域に埋め込む。
- 複数のデータセットを個別にシートに入力する。
- シートとセクションの自動バインドが望ましくない場合にデータを表示する。
QLIK.DATA.LABEL
Data Section から特定の Dimension または Measure のラベルを返します。
=QLIK.DATA.LABEL(data_section_label_or_index, column_label_or_index)
引数:
- data_section_label_or_index – Data Section のラベルまたはインデックス。
- column_label_or_index – Dimension または Measure のラベルまたはインデックス。
ユースケース:
- 列ヘッダーを動的に表示する。
- 柔軟なデータ入力を持つ汎用的または再利用可能なテンプレートを構築する。
QLIK.DATA.TOTAL
Data Section 内の特定の Measure の合計集計値を返します。
=QLIK.DATA.TOTAL(data_section_label_or_index, column_label_or_index)
引数:
- data_section_label_or_index – Data Section のラベルまたはインデックス。
- column_label_or_index – 列のラベルまたはインデックス。
ユースケース:
- メインのデータブロックの外側に合計行またはサマリー KPI を表示する。
- 手動で合計することなく、Qlik が計算した合計を参照する。
QLIK.EXPRESSION
Qlik 式を評価し、その結果を返します。
=QLIK.EXPRESSION("=Today()")
引数:
- query_string – 引用符で囲まれた Qlik 式(= で始まる必要があります)。
ユースケース:
- 集計された Measure (KPI) の表示
=QLIK.EXPRESSION("=Sum(Sales)")- 条件付き書式などのスプレッドシート機能と組み合わせて、ハイライト表示します:
- ターゲット以上の場合は緑色
- ターゲット未満の場合は赤色
- 適用された選択の表示
=QLIK.EXPRESSION("=GetSelectedCount(Country)")=QLIK.EXPRESSION("=GetFieldSelections(Region, ' | ')")
- システム値の表示
=QLIK.EXPRESSION("=Now()")=QLIK.EXPRESSION("=OSUser()")=QLIK.EXPRESSION("ReloadTime()")
ライブな式の評価
QLIK.EXPRESSION() によって返されるすべての値は動的であり、以下に基づいてリアルタイムで更新されます:
- Qlik アプリで行われた選択
- 基礎となるデータの変更
- システムまたはセッションのコンテキスト
これらの値はセッションやユーザー間で変化する可能性があり、ライブダッシュボードやパーソナルビューに最適です。
ヒント:この関数をネイティブな Excel ロジック(IF, TEXT, ROUND など)と併用して、スプレッドシート内にスマートなダッシュボードを直接作成します。
実践的な例
KPI
Qlik 関数に基づいて KPI を構築し、条件付き書式ルールを適用して結果を視覚的にハイライトすることが可能です。
1. KPI 関数の挿入
セルに Qlik 式を入力します。例えば、利益の合計を計算するには:
=QLIK.EXPRESSION("=GetFieldSelections(Region. '|')")

2. 条件付き書式の適用
Spreadsheet の条件付き書式機能を使用して、KPI の結果に基づいてセルを動的にスタイル設定します。
ルールの例:
- Total Profit が 2,400,000,000 より大きい場合は緑色
- Total Profit が 2,400,000,000 未満の場合は赤色

3. ライブアップデート
Qlik で選択が適用されると、KPI 値は自動的に更新され、書式設定はリアルタイムで再評価されます。
これにより、視覚的なインジケーターが Qlik のフィルターや選択に即座に反応するライブ KPI ダッシュボードを簡単に構築できます。
選択ステータスバナー
選択ステータスバナーを使用すると、Qlik アプリで現在どの値が選択されているかを表示できます。これにより、スプレッドシートレポート内にコンテキストを簡単に提供でき、エンドユーザーがどのフィルターがアクティブであるかを常に把握できるようになります。
単純な KPI とは異なり、ここでは複数の関数 ( IF, GetSelectedCount(), GetFieldSelections() ) を組み合わせた、より複雑な Qlik 関数を使用しています。これは、基本的な式に限定されないことを示しています。正確なレポートニーズに合わせて柔軟な関数を構築することが可能です。
1. 選択関数の挿入
選択された Region を表示するには: =QLIK.EXPRESSION("=IF(GetSelectedCount(Region) = 0, 'No selection (All Regions)', GetFieldSelections(Region, ' | '))")
選択された Country を表示するには: =QLIK.EXPRESSION("=IF(GetSelectedCount(Country) = 0, 'No selection (All Countries)', GetFieldSelections(Country, ' | '))")

2. アクティブな選択時の結果
ユーザーが Qlik アプリで選択を適用すると、バナーは自動的に更新され、選択された値を反映します。
Region で Europe が選択されている場合 → セルには Europe と表示されます。
Country で Germany, Latvia, Lithuania が選択されている場合 → セルには Germany | Latvia | Lithuania と表示されます。 
この例では、IF ラッパーを使用して「選択なし」の場合を処理していますが、ロジックを適応させることができます:
- テキスト文字列を独自の用語に置き換える("All Regions" → "すべての値")。
- 複数のフィールドを1行に連結する(例:Region + Year)。
- フィルターが狭すぎたり広すぎたりする場合に、条件付き書式を適用してハイライトする。
アプリとシステムのメタ情報 (ライブ)
Qlik のシステム関数を使用して、アプリケーションのメタデータをスプレッドシートに直接表示することが可能です。これにより、すべてのレポートがどのアプリからのものであるか、いつデータが最後に更新されたかを明確に伝えることができます。
1. メタデータ関数の挿入
ドキュメント名:
=QLIK.EXPRESSION("=DocumentName()")
リロードのタイムスタンプ:
=QLIK.EXPRESSION("=ReloadTime()")

フォーマット設定 (Formatting)
Spreadsheets Extension は、セクションごとに整理されたリボンパネルで利用可能な包括的なフォーマットツールセットを提供します。以下は Home タブから最も頻繁に使用されるツールで、スプレッドシートの内容をすばやくスタイル設定し、構成するのに役立ちます。
Home
- フォント:フォントサイズ、色、太字、斜体、下線、背景の塗りつぶし、枠線

- テキストの配置:垂直および水平方向の配置、方向、インデント、折り返し、結合して中央揃え

- 数値形式:通貨、パーセンテージ、カスタム形式

- セルのスタイル設定:条件付き書式、テーブル書式、セルのスタイル、セルエディター

- セル:挿入、削除、書式

- 編集:関数の挿入、塗りつぶし、クリア、並べ替えとフィルター、検索

スクロール (Scrolling)
Spreadsheets Extension は、特に Qlik に接続された Data Section を使用する場合に、大規模なデータセットとのスムーズな対話をサポートするために垂直スクロールを実装しています。この動作は自動的であり、シートのタイプやデータの接続方法によって異なります。
このセクションでは、スクロールがデータのロードとレンダリングにどのように影響するかを説明し、高度なユースケースに関する重要な詳細の概要を説明します。
スクロール全般
- ユーザーが垂直方向にスクロールして表示領域の下端に近づくと、システムは行を追加すべきか、またはデータをロードすべきかをチェックします。
- 水平スクロールはナビゲーションのみをサポートし、データのロードや範囲の拡張をトリガーしません。
同期されたデータシート
Data Section に対して Create Synced Sheet を使用している場合、スプレッドシートはスクロールするにつれてさらに行をロードすることで、大規模なデータセットを自動的に処理します。
シートを下に移動すると、Qlik データがさらに利用可能な場合、表示されている行の下にシームレスに表示されます。手動でトリガーしたり再ロードしたりする必要はありません。これにより、長いテーブルでの作業が流動的で途切れることなく感じられます。
ロードするデータがもう残っていない場合でも、シートをさらにスクロールできますが、新しい行は空で表示されます。
この動作により以下が保証されます:
- スクロール中にハードストップにぶつかることはありません。
- 新しいデータは必要なときにのみ表示されます。
- データの最後に達したときでも、レイアウトの整合性が維持されます。
シートの設定にある Rows Count 設定を調整することで、最初にロードされるデータの量を制御できます。
その他のシート
Create Synced Sheet を介して Data Section にリンクされていないシートは、スクロール中に自動的な行の追加やデータのロードをトリガーしません。
範囲オフセットとデータロード
システムは、データロード動作を計算する際に、Data Section の最初の列の範囲オフセットを尊重します。
- 最初の列の範囲が低い行(例:A100)から始まる場合、シートはその位置からレンダリングを開始します。
- すべてのスクロールおよびデータ取得ロジックは、その最初の列のオフセットに基づいています。
制限事項とエッジケース
- 水平方向の範囲(例:A1:Z1)は、最初の値セットに対してはデータを正しくレンダリングしますが、垂直スクロール中の追加のデータロードはサポートしません。このような場合、ユーザーは手動でレイアウトと可視性を管理する必要があります。
- 混合された列オフセット(例:A1, B5, C10)を使用すると、以下の結果になる可能性があります:
- 不整合な配置
- 表示データ内の隙間
- データが部分的にしかロードされていないように見える
データ取得は、他の列がどのように構成されているかに関係なく、常に最初の列のオフセットに合わせて調整されます。
パフォーマンスに関する考慮事項
大きなオフセットや非常に多い行数を持つカスタム範囲は、ロード時のデータ量を大幅に増加させる可能性があります。
例えば:
- 5つの列を持ち、ユーザー定義の行制限が 10,000 の Data Section は、50,000 個のセルをロードしてレンダリングしようとします。
- これは、特に古いブラウザや低スペックのマシンにおいて、パフォーマンスに影響を与える可能性があります。
応答性を維持するために、以下を考慮してください:
- 可能な限り行数を制限する。
- 不必要に大きな開始オフセットを避ける。
開く / 保存 (Open / Save)
File メニューの Open / Save 機能を使用すると、スプレッドシートの内容を保持、再利用、および共有できます。
スプレッドシートの構成を保存およびロードするための場所を 2 つから選択できます。各オプションは、Properties Panel で有効または無効にできます。有効にすると、対応するセクションが File メニューに表示されます。

オプション 1:デスクトップ (Desktop)

- スプレッドシートの構成を JSON ファイルとしてコンピューターに保存します。
- 個々のユーザーと直接共有したり、プライベートなコピーを保持したりするのに最適です。
保存されたファイルを開くには:
- File メニュー → Open → Desktop に移動します。
- Select File をクリックします。
- 以前に保存した JSON 構成ファイルを選択します。
オプション 2:コンテンツライブラリ (Content Library)

- 構成を、選択した Qlik コンテンツライブラリ内の JSON ファイルとして保存します。
- Desktop オプションと似ていますが、ファイルはローカルではなく Qlik 内に保存されます。
- コンテンツライブラリへのアクセス権を持つすべてのユーザーがアクセスできる、複数のバージョンのスプレッドシート設定を維持するのに最適です。
保存する必要のない一時的な変更については、Autosave 機能を使用してください。
自動保存 (Autosave)
Autosave 機能を使用すると、安定した構成に明示的に保存することなく、スプレッドシートへの変更を保持できます。
有効にすると、変更を加えた後、3 秒間の非アクティブ状態が続くと自動的に記録されます。これらの自動保存された変更はブラウザにローカルに保存され、本人だけが利用できます(他のユーザーとは共有されません)。
3 つのストレージオプションがあります:

オプション 1:ウィンドウセッション (Window Session)
- 現在の構成をブラウザセッションに保存します。
- ブラウザウィンドウが開いている間、変更は利用可能です。
- ブラウザを閉じると、自動保存された変更はすべて破棄されます。
オプション 2:ブラウザ IndexDB (Browser IndexDB)
- 現在の構成をブラウザの IndexedDB ストレージに保存します。
- ブラウザを閉じて再度開いた後も、変更は保持されます。
- 複数のセッションにわたって、作業中の個人的な内容を保持するのに最適です。
オプション 3:無効 (Disabled)
- Autosave を完全にオフにします。
- 変更は自動的に保存されません。
注:一時的な作業には Window Session を、永続的な個人のドラフトには IndexedDB を使用してください。また、影響の大きい変更を Autosave で長期間保存することはお勧めしません。長期的な変更については、安定した保存オプション の使用を検討してください。
バージョン履歴 (Version History)
Autosave 機能が有効な場合、File メニューで Version History オプションが利用可能になります。

バージョン履歴を使用すると、アプリケーションへのアクセス権を持つすべての承認済みユーザーの最新の自動保存バージョンにアクセスできます。
つまり、ユーザーがスプレッドシートに変更を加えると、その最新の自動保存バージョンが Version History タブに表示され、簡単に確認したり復元したりできるようになります。
各保存バージョンをブラウズして、その内容を検査できます。
Apply をクリックして、選択したバージョンを現在のスプレッドシートの状態として復元します。
- Qlik アプリケーションの所有者でない場合、適用されたバージョンは、あなた自身の最後に保存されたバージョンのスプレッドシートにのみ影響します。
- アプリケーションの所有者の場合、バージョンを適用すると、すべてのユーザーに対するスプレッドシートのデフォルト構成が更新されます。
インポート / エクスポート (Import / Export)
Spreadsheets Extension は、データのインポートおよびエクスポートのための堅牢なツールを提供し、外部ファイルやソフトウェアとのスムーズなやり取りを可能にします。
Excel または CSV ファイルのインポート
データをインポートするには、リボンメニューの FILE タブを開き、Import を選択します。.XLSX (Excel) または .CSV ファイルのいずれかをアップロードできます。
各インポートタイプには、ファイルの処理方法を制御する一連の構成可能なオプションが含まれています。選択した形式に応じて、書式、関数、結合されたセル、計算設定などを保持できる場合があります。これらのオプションにより、インポートされたコンテンツが Qlik 環境で期待どおりに動作し、表示されるようになります。
一度インポートされると、スプレッドシートはその構造とスタイルを維持するため、既存のデータやテンプレートを使用して作業を簡単に継続できます。インポートしたファイルに Qlik 駆動のチャート、追加のシート、または計算ロジックを補強することもできます。
Excel、CSV、または PDF へのエクスポート
スプレッドシートをエクスポートするには、FILE タブに移動して Export を選択します。ニーズに応じて、現在のワークブックを .XLSX、.CSV、または .PDF 形式で保存できます。
各エクスポート形式には独自の構成パネルがあり、出力を調整できます。例えば、スタイル、関数、レイアウト要素、ヘッダーを含めるかどうかを選択したり、結合されたセルや空のセルの処理方法を制御したりできます。これらのオプションは、エクスポートされたドキュメントが目的の構造とコンテンツの忠実度を維持するのに役立ちます。
注:Excel にエクスポートする際は、“ Include Binding Source ” フラグがオンになっていることを確認してください。そうしないと、エクスポートが破損する可能性があります。
ライトバック (Writeback)
Spreadsheets Extension を使用すると、Qlik アプリにロード済みのデータを操作できるだけでなく、新規または更新されたデータを外部データベースに書き戻すこともできます。この機能により、ユーザーがスプレッドシートのようなインターフェースでデータを直接編集し、それらの変更を Qlik の外部に永続化できる、インタラクティブで運用的なユースケースが可能になります。
Writeback 機能は、具体的にはこのワークフローをサポートするために存在します。このドキュメントのセクションでは、ライトバック用の環境をセットアップする方法、Spreadsheet Extension をバックエンドサービスに接続する方法、およびデータ接続の構成からデータの編集、アプリコンテンツのリロードに至るまで、Qlik アプリでライトバック機能を効果的に使用する方法を学びます。
概要
ライトバックの構成
1. Data Config - データ接続の定義
Data Config では、Spreadsheet Extension がバックエンドに接続する方法を構成します:
- データの読み取りおよび書き込みのための HTTP エンドポイントを定義します (GET, POST, PUT, DELETE, BATCH)。
- 認証を構成します (オプション)。
- データベーステーブルへのアクセス方法を記述する論理的な Tables を作成します。
このコンテキストにおける Table は、以下を表す構成オブジェクトです:
- バックエンドエンドポイント、
- データベーステーブルまたはビュー、
- およびそれとの対話のためのルール。
2. TableSheet - データの編集
TableSheet では、構成された Tables の1つを選択してシートにバインドします。
接続されると:
- データがバックエンドからロードされます。
- TableSheet にはデータベースデータを表すテーブルビューが表示されます。
ユーザーは以下を行えます:
- セル値の編集、
- 新しい行の追加、
- 既存の行の削除。
すべての変更は、スプレッドシートのような UI で直接実行されます。
内部的には、これらのアクションはバックエンドに送信される CRUD またはバッチリクエストに変換されます。
3. 変更の保存とデータのロード
ユーザーがデータの編集を終了すると:
- 変更がバックエンドに送信され、データベースに永続化されます。
- Qlik アプリ自体は自動的には更新されません。
- Qlik のビジュアルで更新されたデータを確認するには、ユーザーが明示的にリロードをトリガーします。
2つのリロードオプションが利用可能です:
- Partial Reload (部分リロード)
現在のユーザーセッションのデータを更新します。 - Full Reload (フルリロード)
アプリケーションのフルデータモデルをリロードします(パワーユーザーのみ利用可能)。
リロードは Qlik Engine API を介してトリガーされ、バックエンドから更新されたデータを読み取るようにアプリのロードスクリプトが正しく構成されているかどうかに依存します。
ライトバック用バックエンド
ライトバックをサポートするために、以下で構築されたサンプルリファレンスバックエンドを提供しています:
- Node.js
- Express
- SQLite
サンプルバックエンドソリューションの GitHub リポジトリ: https://github.com/AnyChart/writeback-server-example
このバックエンドは:
- 必要な CRUD およびバッチエンドポイントを実装しています。
- データをリレーショナルデータベースに保存します。
- ライトバック統合がエンドツーエンドでどのように機能するかを示します。
提供されているバックエンドはデモンストレーション用です:
- ローカルでのテストやデモに適しています。
- リファレンス実装として意図されています。
- ユーザーは、本番環境用として独自のバックエンドに適応させるか、置き換えることが期待されています。
ライトバックでできること(とできないこと)
ライトバックの特徴:
- 明示的 - ユーザーがいつ保存しリロードするかを決定します。
- 制御可能 - バックグラウンドやスケジュールされたリロードはありません。
- 柔軟 - デモ用およびカスタムバックエンドの両方で動作します。
ライトバックではないもの:
- リアルタイム同期の提供。
- 自動的なバックグラウンドリフレッシュの提供。
- バックエンドデータガバナンスの代替。
一般的なライトバックの流れ
- Data Config でバックエンド接続を構成します。
- 構成された Table を TableSheet にバインドします。
- TableSheet でデータを直接編集します。
- 変更が バックエンド に送信され、保存されます。
- Partial または Full Reload をトリガーして Qlik データを更新します。
編集 → 保存 → リロード → Qlik で更新されたデータを確認
________________________________________
Quick Start
このセクションでは、提供されているリファレンスバックエンドを使用して、動作するライトバックデモを作成する最も速い方法を示します。
このガイドでは、正常系に焦点を当て、カスタムバックエンド、ページング、複雑なバリデーションなどの高度なトピックは避けています。
前提条件
- Qlik Sense Desktop
- Spreadsheet Extension がすでにインストールされていること。
- Node.js
- 以下の基本的な知識:
- Qlik ロードスクリプト
- Qlik シートへのオブジェクトの追加
注:同じワークフローが他の Qlik プラットフォームにも適用されます。
ビデオチュートリアル
近日公開
ステップ 1:デモ用ライトバックバックエンドの起動
Node.js + Express + SQLite で構築された サンプルリファレンスバックエンド を提供しています。
これは実際の環境に合わせて適応させることができます。
- リポジトリをクローンします:
git clone https://github.com/AnyChart/writeback-server-example
cd writeback-server - 依存関係をインストールします:
npm install - 環境変数を構成する
.env ファイルを作成し、以下の変数を設定します:
PORT = 3333
TOKEN = testtoken123 - サーバーを起動します:
npm start - バックエンドが動作していることを確認します:
a. ブラウザまたは REST クライアントを開きます
b. GET エンドポイントが応答するかチェックします
http://localhost:<PORT>/employees/get
この時点で、バックエンドとデモデータベースがローカルで動作しています。
ステップ 2:Qlik アプリでの REST コネクタの作成
ライトバックによる変更を Qlik ビジュアライゼーションで表示するには、アプリがバックエンドから直接データをロードする必要があります。
これは REST コネクタを使用して行われます。
- Data Load Editor を開きます。
- 新しい REST コネクタを作成します。
- バックエンドの GET エンドポイント URL を設定します(例:http://localhost:3333/employees/get)。
認証(重要)
バックエンドが認証を必要とする場合(デモバックエンドなど):
コネクタにカスタムヘッダーを追加します:
Name: Authorization
Value: Bearer YOUR_TOKEN

注:
- トークンの値は、Spreadsheets Extension で使用されるトークンと一致する必要があります。
- バックエンドが認証を必要としない場合、このヘッダーは省略できます。
- 認証の処理は、完全にバックエンドの実装に依存します。
コネクタを保存します。
この例では、コネクタの名前を Writeback_DEMO としています。
ステップ 3:バックエンドからデータを読み取るためのロードスクリプトの追加
REST コネクタを作成した後、そこからデータを読み取るロードスクリプトを追加します。
ロードスクリプトの例:
LIB CONNECT TO 'Writeback_DEMO';
RestConnectorMasterTable:
SQL SELECT
"id",
"Region",
"Director",
"Salary",
"HiredDate",
"FiredDate"
FROM JSON (wrap on) "root";
[employees]:
REPLACE LOAD
[id],
[Region],
[Director],
[Salary],
[HiredDate],
[FiredDate]
RESIDENT RestConnectorMasterTable;
DROP TABLE RestConnectorMasterTable;リロード(Partial または Full)によってこのスクリプトが再実行され、ライトバックによる変更が反映されます。
ステップ 4:アプリへの Spreadsheet Extension の追加
- Qlik アプリを開きます。
- Spreadsheet オブジェクトをシートに追加します。
この時点で、スプレッドシートは表示されていますが、まだどのデータソースにも接続されていません。
ステップ 5:データソースの構成 (Data Config)
- Spreadsheet Extension 内で Data Config を開きます。
- 新しい Table を作成します。
- バックエンド認証情報(トークン)を入力します。
- バックエンドエンドポイントを構成します(例:employees テーブル):
- GET: http://localhost:3333/employees/get
- POST: http://localhost:3333/employees/post
- PUT: http://localhost:3333/employees/put
- DELETE: http://localhost:3333/employees/delete
- BATCH: http://localhost:3333/employees/batch
- 構成を保存します。
このステップにより、Spreadsheet Extension がバックエンドと通信する方法が定義されます。
ステップ 6:テーブルを TableSheet にバインドする
- TableSheet に切り替えます。
- リストから構成した Table を選択します。
- それをシートにバインドします。
バインドされると:
- データがバックエンドからロードされます。
- データベースを表すテーブルビューが表示されます。
- セルが編集可能になります。
ステップ 7:ライトバックのテスト
- TableSheet で既存の値を編集するか、新しい行を追加します。
- 変更を保存/適用します。
- リロードをトリガーします:
- Partial Reload (推奨)
- Full Reload (こちらも利用可能)
Extension は以下の処理を行います:
- バックエンドに変更を送信する。
- 変更をデータベースに永続化する。
- Qlik Engine API を介してアプリをリロードする。
ステップ 8:結果の確認
リロードが完了した後:
- 更新されたデータが表示されるはずです:
- 他の Qlik ビジュアライゼーション(テーブル、KPI など)で。
- Spreadsheet 内だけでなく。
- これにより以下が確認されます:
- ライトバックが機能した。
- データが保存された。
- リロードが成功した。
- ロードスクリプトが更新されたデータを読み取っている。
TableSheet で編集されたデータ → データベースに保存 → Qlik ビジュアルに表示。
________________________________________
アーキテクチャ
このセクションでは、Spreadsheets Extension における Writeback 機能のアーキテクチャと、その主要コンポーネントが互いにどのように対話するかを説明します。
ハイレベルなフロー
高いレベルで見ると、ライトバックアーキテクチャはクライアント駆動の明示的なインタラクションモデルに従います:
- ユーザーが Spreadsheets Extension でデータを編集します。
- Extension がライトバックバックエンドにライトバックリクエストを送信します。
- バックエンドが変更をデータベースに永続化します。
- ユーザーが Extension から明示的にリロードをトリガーします。
- Qlik アプリがデータをリロードし、ビジュアライゼーションを更新します。
バックグラウンドでの同期や、ライトバック後の自動的なリロードはありません。
すべての状態の変化はユーザーのアクションによって開始されます。
主要コンポーネント
Data Config (Extension)
Data Config は、Extension 内の構成レイヤーです。
責任:
- 以下に対する Tables とそのバックエンドエンドポイントを定義する:
- GET
- POST
- PUT
- DELETE
- BATCH
- COLUMNS
- 認証を構成する。
Table は構成オブジェクトであり、データそのものではありません。
これは、Extension がバックエンドとどのように通信するかを記述します。
TableSheet (Extension)
TableSheet はデータ対話レイヤーです。
責任:
- 構成された Table を専用ビュー (TableSheet) にバインドする。
- バックエンドデータを表形式で表示する。
- ユーザーに以下の実行を許可する:
- セル値の編集、
- 行の追加、
- 行の削除、
- リロードの実行
- 変更を収集し、ライトバックの準備をする。
TableSheet は、バックエンドからロードされた現在のデータ状態を表しており、キャッシュされた、あるいは信頼できる唯一のコピーではありません。
ライトバックバックエンド
ライトバックバックエンドは、データ永続化を担当する HTTP サービスです。
責任:
- Extension からの CRUD およびバッチリクエストを受け入れる。
- 受信データを処理する(バックエンドの実装により定義)。
- データをデータベースに永続化する。
- 更新された行または操作結果を返す。
重要な境界:
- バックエンドは Qlik を意識しません。
- バックエンドはリロードをトリガーしません。
- バックエンドは Qlik 内のユーザーセッションを管理しません。
提供されている Node.js + Express + SQLite バックエンドはリファレンス実装として機能し、本番環境で適応または置き換えられることを意図しています。
データベース
データベースは、データの信頼できる状態を保存します。
主な特徴:
- バックエンドが信頼できる唯一の情報源です。
- 変更はライトバックリクエスト時に即座に適用されます。
- 中間ステージングレイヤーはありません。
マルチユーザーの動作は last-write-wins (最後の書き込みを優先) モデルに従います:
- 同時更新は実行順序によって解決されます。
- ロックやマージロジックは適用されません。
このアプローチにより、定義上競合が回避され、システムを予測可能な状態に保つことができます。
Qlik アプリとエンジン
Qlik アプリは、ロードスクリプトを介してバックエンドからデータをロードします。
責任:
- GET エンドポイントを使用してバックエンドからデータを取得する。
- アプリのデータモデルを構築する。
- リロード後にビジュアライゼーションを更新する。
リロードは Qlik Engine API を使用して Spreadsheets Extension からトリガーされます。
以下のものは存在しません:
- QMC リロードタスク、
- スケジュールされたリロード、
- サーバー主導のリロード。
認証
Spreadsheets Extension とライトバックバックエンド間の認証は、3つのモードをサポートしています:
- None — 認証データなしでリクエストが送信されます。
- Basic — リクエストにユーザー名とパスワードが含まれます。
- Token — リクエストの Authorization ヘッダーに Bearer トークンが含まれます。
Extension は、選択された認証データを発信リクエストに添付するだけです。
正確な認証ロジック、バリデーションルール、およびアクセス制御は、完全にバックエンドによって管理されます。
認証はオプションであり、バックエンドの要件に依存します。
アーキテクチャにおけるリロードモデル
リロードロジックは完全に Spreadsheets Extension によって所有されます(バックエンドではありません)。
- リロードはユーザーによって明示的にトリガーされます。
- Partial および Full リロードがサポートされています。
- リロードは Qlik Engine API のみを使用します。
リロードはライトバックとは別のステップであり、自動化されることはありません。
アーキテクチャのまとめ
ライトバックアーキテクチャは、意図的にシンプルかつ明示的になっています:
- UI とインタラクションは Spreadsheets Extension に存在します。
- 永続化はバックエンドサービスによって処理されます。
- データのリロードはユーザー主導であり、セッションを認識します。
- マルチユーザーの動作は last-write-wins により確定的です。
- QMC、リロードタスク、バックグラウンドプロセスはありません。
この設計により責任が明確に分離され、アーキテクチャの書き直しなしに、デモから本番環境へとソリューションをスケールさせることができます。
________________________________________
バックエンドのセットアップ
ライトバックバックエンドの目的
ライトバックバックエンドは、Spreadsheets Extension で行われたデータの変更を永続化するために必要なコンポーネントです。
その責任には以下が含まれます:
- Extension からのライトバックリクエストの受け入れ、
- データベースへのデータの書き込み、
- 更新されたレコードのクライアントへの返却。
バックエンドは Qlik から意図的に分離されており、リロード、セッション、または UI ロジックを管理しません。
デモ用バックエンド(リファレンス実装)
以下で構築されたデモ用バックエンドを提供しています:
- Node.js
- Express
- SQLite
このバックエンドは以下として機能します:
- ローカルテスト用のすぐに実行できるデモ、
- 独自のバックエンドを構築するためのリファレンス実装。
これは以下を示します:
- 必要な CRUD およびバッチエンドポイント、
- 期待されるリクエストおよびレスポンス形式、
- 基本的な認証処理、
- データベースとの対話パターン。
デモ用バックエンドは本番レベルではなく、デモンストレーションおよび学習目的を意図しています。
デモ用バックエンドの実行
デモ用バックエンドの実行と構成に関する詳細な手順は、GitHub リポジトリで管理されています:
ライトバックサーバーリポジトリ - https://github.com/AnyChart/writeback-server-example
リポジトリの README には以下が含まれます:
- インストールの手順、
- 環境変数、
- 認証のセットアップ、
- データベーススキーマ、
- 利用可能なエンドポイント、
- リクエストの例。
独自のバックエンドを使用する
デモ用バックエンド を使用する必要はありません。
以下の条件を満たす限り、どのようなバックエンド実装でも使用できます:
- 互換性のある CRUD およびバッチエンドポイントを公開していること、
- JSON データを受け入れ、返却すること、
- 変更を確実に永続化すること、
- 必要に応じて認証とバリデーションを強制すること。
以下に関する責任は:
- データのバリデーション、
- セキュリティ、
- アクセス制御、
- スケーラビリティ
バックエンドの実装側にあります。
CRUD エンドポイントは、以下の要件に従う必要があります:
操作 | リクエストタイプ | リクエストデータ | レスポンスデータ |
update | POST | 更新されたデータ | 更新されたデータ |
read | GET | データなし | レコード配列 |
delete | DELETE | 削除されたデータまたはデータ配列 | 制限なし |
create | POST | 挿入されたデータ | 挿入されたデータ |
getColumns | GET |
| 列配列。各列には以下のプロパティが含まれます: 'field' プロパティは列名です。 'dataType' プロパティは列のデータ型です。 'defaultValue' プロパティは列のレコードのデフォルト値です。 'isPrimaryKey' プロパティはプライマリ列です。 |
batch | POST | オブジェクト配列。各オブジェクトには 'type' プロパティが含まれます。 操作タイプは 'update', 'insert', 'delete', 'addColumn', 'updateColumn' または 'removeColumn' です。 'dataItem' プロパティは現在のレコードです。 'sourceIndex' プロパティはレコードのインデックスです。 オプションの 'oldDataItem' プロパティは元のレコードです。 オプションの 'column' プロパティは現在の列です。 オプションの 'data' プロパティは、現在追加された列のデフォルト値です。 オプションの 'originalColumn' プロパティは元の列です。 例: [ {"type":"addColumn","column":{...}}, {"type":"updateColumn","column":{...}, "originalColumn":{...}}, {"type":"removeColumn","column":{...}}, {"type":"delete","dataItem":{...}, "sourceIndex":5}, {"type":"insert","dataItem":{...}, "sourceIndex":3}, {"type":"update","dataItem":{...}, "oldDataItem":{...}, "sourceIndex":1}] | オブジェクト配列。各オブジェクトには操作の成否を示す 'succeed' プロパティが含まれます。また、'insert' 操作の場合のみ、現在のレコードであるオプションの 'data' プロパティが含まれます。 例: [{"succeed":true}, {"succeed":false}, {"succeed": true}, {"succeed":true}, {"succeed":false}, {"succeed": true}] |
バックエンドのまとめ
- ライトバックにはバックエンドが必須です。
- 利便性と参照のためにデモ用バックエンドが提供されています。
- 本番環境への導入にはカスタムバックエンドを使用する必要があります。
- バックエンドの実装詳細は GitHub に文書化されています。
________________________________________
Extension の構成
このセクションでは、バックエンドとの通信、データ変更の保存、およびリロードのトリガーが可能になるように、Qlik アプリ内で Spreadsheets Extension を構成することに焦点を当てます。
データソース構成の概要
ライトバックの構成は、Data Source ウィンドウで管理されます。
このウィンドウでは1つ以上の Tables を定義します。各 Table は、バックエンドエンドポイントへの論理的な接続を表します。

アクセスするには、リボンメニューの Data セクションを選択し、Data Source Config ボタンをクリックします。

Table の設定
認証
各 Table に対して認証方法を構成できます。
選択した方法は、その Table に対して行われるすべてのリクエストに適用されます。
利用可能なオプション:
- None
認証を使用しません。
リクエストは認証ヘッダーなしで送信されます。 - Basic
ユーザー名とパスワードのペアを使用します。
資格情報は標準の HTTP Basic 認証を使用して送信されます。 - Token
Bearer トークンを使用します。
トークンは、Authorization: Bearer <token> ヘッダーとしてリクエストに添付されます。

認証はオプションであり、完全にバックエンドの実装方法に依存します。
デモ用バックエンドに関する注記:
AnyChart が提供するデモ用ライトバックサーバーでは、デフォルトでトークンベースの認証を使用しています。これは、リファレンス実装におけるシンプルさと明快さのために行われています。
Table Name
Extension 内部で使用される論理名です。
この名前は、後に Table を TableSheet にバインドする際に選択します。
エンドポイントの構成
各操作について、以下を指定します:
- HTTP メソッド
- 完全なエンドポイント URL
サポートされている操作:
- Read (GET)
TableSheet にデータをロードします。 - Create (POST)
新しい行を挿入します。 - Update (PUT)
既存の行を更新します。 - Delete (DELETE)
行を削除します。 - Batch (POST)
1つのリクエストで複数の作成/更新/削除操作を適用します。 - Get Columns (GET)
バックエンドから列のメタデータを取得します。
注:
- データを表示するには Read (GET) エンドポイントが必須です。
- ライトバックのアクションは、対応するエンドポイントが構成されている場合にのみ機能します。
- エンドポイントが不足している場合、関連するアクションは正しく機能しません。
Table を TableSheet にバインドする
Table を構成した後:
- リボンメニューの Insert セクションを選択し、TableSheet ボタンをクリックして TableSheet ビューに切り替えます。

- ドロップダウンから構成済みの Table の1つを選択します。

- TableSheet 上にバインドされたテーブルが表示されます。

バインドされると、TableSheet は Read エンドポイントから返されたデータを表示し、構成された操作に従って編集を許可します。
________________________________________
ライトバックの使用方法
このセクションでは、TableSheet インターフェースを使用して、Qlik アプリ内でライトバックを操作する方法を説明します。
既存の行の編集
既存のデータを編集するには、まず Row Action モードを有効にします:
- リボンメニューの Table Sheet Design セクションを開きます。
- Row Action ボタンをクリックします。

Row Action モードが有効になると:
- プライマリキー以外の列の値を編集できます。
- プライマリキーの列は読み取り専用で、変更できません。
行の変更を保存するには:
- 行の左側にあるチェックマーク (✓) アイコンをクリックします。
このアクションにより、即座に Update リクエストがバックエンドに送信されます。
変更を破棄するには:
- バツ (✕) アイコンをクリックします。行は以前の状態に戻ります。

新しい行の追加
新しい行を追加するには:
- TableSheet の一番下までスクロールします。
- 最後の空の行に新しいデータを入力します(行内の少なくとも1つのセルに入力する必要があります)。
追加のフィールドが必要な場合、それはバックエンドのスキーマによって定義されます。
新しい行を保存するには:
- 左側のチェックマーク (✓) アイコンをクリックします。
- これにより、Create リクエストがバックエンドに送信されます。

バックエンドで値の欠落や空の値が許可されている場合、それらはそのまま保存されます。
バリデーションルールは、バックエンドの実装方法に依存します。

行の削除
行を削除するには:
- 削除したい行を探します。
- 行の左側にあるマイナス (–) アイコンをクリックします。

このアクションにより、Delete リクエストがバックエンドに送信されます。
変更の保存とバッチアクション
行レベルのアクション(チェックマーク/マイナスアイコン)は、その行に対する変更を即座に適用します。
複数の行に変更を加え、それらを一括で適用したい場合:
- リボンメニューの Table Sheet Design を開きます。
- Batch ドロップダウンを開きます。
- Submit をクリックします。

これにより、保留中のすべての変更が単一のバッチリクエストで送信されます。
注:Batch 機能を有効にするには、Data Source Config で “Batch” オプションをオンにしてください。
Qlik でのデータのリロード
変更を加えた後、アプリをリロードして他のビジュアライゼーションを更新します。
リロードコントロールの場所:
リボンメニュー → Table Sheet Design → Batch ドロップダウン
利用可能なオプション:
- Partial Reload
- Full Reload

注:
- リロードは常に手動でトリガーされます。
- Partial Reload を行うには、アプリのロードスクリプトがそれに応じた構造になっている必要があります。
- リロードが完了すると、アプリ内のすべてのチャートとテーブルに更新されたデータが反映されます。
一般的なワークフローの例
一般的なライトバックのワークフローは以下のようになります:
- TableSheet で値を編集する
- チェックマークを使用して行を保存する
- Partial Reload をトリガーする
- チャートやテーブルで更新されたデータを確認する
これにより、ライトバックが明示的で予測可能、かつ制御しやすい状態に保たれます。
AI 関数 (AI Formula)
AI 関数機能を使用すると、接続された AI モデル(アルファ版では OpenAI との接続のみサポート)を使用して自然言語クエリを実行できます。これにより、スプレッドシートがインタラクティブでインテリジェントなツールになり、言語ベースのプロンプトを使用してコンテンツをオンザフライで生成または変換できるようになります。
構成(Properties Panel)
AI 関数を使用するには、Extension の Properties Panel にある AI Formula セクションに移動し、以下の設定を構成します:
- AI サーバー URL
OpenAI API のエンドポイント(例:https://api.openai.com/v1/chat/completions) - AI モデル
現在、以下をサポートしています:- Gpt-3.5-turbo
- Gpt-4
(将来的に追加のモデルが追加される予定です)
- リクエストあたりの最大トークン数
AI のレスポンスの長さを制御します(デフォルト:4000) - 関数の評価モード
AI にクエリを送信するタイミングを決定します:- 再計算時
- 1回のみ
- 一定の間隔
- API キー
OpenAI のシークレットキー(選択したモデルへの有効なアクセス権が必要です)
スプレッドシートでの AI() 関数の使用
上記の設定を構成すると、スプレッドシートのセルで直接以下の関数を使用できます:
=AI("Translate this sentence to Spanish: " & A2)
関数の構文:
AI(query_string)
- query_string – 選択したモデルに送信される文字列プロンプト(静的な値、またはセル参照を使用した動的な値が可能です)
結果は、関数が入力されたセルに直接表示されます。
テーブル Extension からの変換
標準の Qlik Table チャートを Spreadsheets Extension に変換できます。
- 元の Table で構成されていたすべての Columns は、スプレッドシートのデフォルトの Data Section に自動的に転送されます。
- 元の Table と同じ列をすべて含む、対応するシートが作成されます。
Table チャートを変換する方法:
- アプリのシートにデータを含む Table チャートがあることを確認します。
- Edit Mode に入り、Assets パネルを開きます。
- Custom Objects に移動します。
- Spreadsheets Extension を見つけます。
- 既存の Table チャートの上にドラッグアンドドロップします。
- Convert を選択します。
注:変換は一方向のみです。Spreadsheet を標準の Qlik Table チャートに戻す変換はサポートされていません。
ヒント:この機能を使用して既存のテーブルを Spreadsheets にすばやく移行し、高度な編集機能やインタラクション機能を解放してください。
ホットキー (Hotkeys)
Spreadsheet Extension で使用可能なホットキーのリスト。
| キー | アクション |
| Ctrl+Z | 元に戻す |
| Ctrl+Y | やり直し |
| Ctrl + Down | 一番下へ移動 |
| Down | 下へ移動 |
| End | 行の末尾へ移動 |
| Ctrl+Right | 行の末尾へ移動 |
| Ctrl+Home | シートの先頭へ移動 |
| Home | 行の先頭へ移動 |
| Ctrl+Left | 行の先頭へ移動 |
| Ctrl+End | シートの右下へ移動 |
| Left | 左へ移動 |
| Tab | 次のセルへ移動 |
| PageDown | ページダウン |
| PageUp | ページアップ |
| Ctrl+PageUp | 前のシートへ移動 |
| Ctrl+PageDown | 次のシートへ移動 |
| Shift+Tab | 前のセルへ移動 |
| Right | 右へ移動 |
| Ctrl+Up | 一番上へ移動 |
| Up | 上へ移動 |
| Delete | クリア |
| Back | クリアして編集 |
| Enter | 入力を確定して下へ移動 |
| Shift+Enter | 入力を確定して上へ移動 |
| ESC | 入力をキャンセル |
| Shift+Left | 左方向へ選択 |
| Shift+Right | 右方向へ選択 |
| Shift+Up | 上方向へ選択 |
| Shift+Down | 下方向へ選択 |
| Shift+Home | 行頭まで選択 |
| Ctrl+Shift+Left | 行頭まで選択 |
| Shift+End | 行末まで選択 |
| Ctrl+Shift+Right | 行末まで選択 |
| Shift+PageUp | 1ページ分上を選択 |
| Shift+PageDown | 1ページ分下を選択 |
| Ctrl+Shift+Up | 一番上まで選択 |
| Ctrl+Shift+Down | 一番下まで選択 |
| Ctrl+Shift+Home | 最初のセルまで選択 |
| Ctrl+Shift+End | 最後のセルまで選択 |
| Ctrl+C | コピー |
| Ctrl+X | 切り取り |
| Ctrl+V | 貼り付け |
| Alt+Enter | セル内改行 |

