【LookerStudio×GAS×スプレッドシート】計算フィールド不要!Looker Studioの表示の遅さを軽減

Looker Studioの表示速度を改善!GoogleスプレッドシートとGASを活用し、計算フィールドなしでデータを可視化する方法を詳しく画像を用いて解説します。
目次
Looker Studioの計算フィールドが遅くなる原因
Looker Studio(旧Googleデータポータル)は、手軽にデータを可視化できる便利なツールですが、計算フィールドを多用するとパフォーマンスが低下することがあります。特に、大量のデータを扱う場合や複雑な計算を行う場合、レポートの表示に時間がかかることが問題になります。
また、難しいタスクでLookerStudioを使用している人は感じたことがあるかもしれませんが計算フィールドではできることできないことの限界があります。
では、どのようにすればLooker Studioの表示を速く確実にできるのでしょうか?答えは、スプレッドシート側で事前に計算を済ませておくことです。
スプレッドシートで事前に計算を済ませるメリット
Looker Studioの計算フィールドを使わずに、スプレッドシートで事前に計算しておくことで、次のようなメリットがあります。
✅ 表示速度の向上:計算を事前に完了させることで、Looker Studioの負担を軽減し、レポート表示を高速化できます。
✅ Looker Studioの処理負荷削減:計算済みのデータをそのまま取得できるため、Looker Studioの内部処理がシンプルになります。
✅ GAS(Google Apps Script)を使えばより柔軟な処理が可能:関数では対応できない複雑な処理もGASを使うことで実装できます。
では、具体的にGASを使ってスプレッドシートのデータを処理し、それをLooker Studioに取り込む方法を見ていきましょう。
GASでスプレッドシートのデータを処理するスクリプトの作成
1️⃣ 手順①:スプレッドシートを準備
まず、Googleスプレッドシートを用意し、データを記録します。例えば、以下のような売上データがあるとします。
また、売上データの他にGASのスクリプトを回した後の集計データのシートを作成します。
2️⃣手順②:GASスクリプトを作成
- Googleスプレッドシートを開き、
拡張機能 > Apps Script
をクリック
- スクリプトを書く(JavaScript)
以下のスクリプトは月ごとの売上、購入回数、購入単価を計算します。 またLookerStudioでは実装が難しい「前年同月」データや、計算フィールドでできるような年度の計算(2024年2月は2023年度)や経過月(例えば10月だったら4月から7ヶ月目)など、LookerStudioで必要なディメンションやメジャーを全て作成してしまいます。
function aggregateSalesData() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sourceSheet = ss.getSheetByName('元データ'); // データを取るシート
const targetSheet = ss.getSheetByName('集計データ'); // 出力先シート
const data = sourceSheet.getDataRange().getValues();
const headers = [
"年月", "売上", "購入回数", "購入単価", "前年同月売上", "前年同月購入回数", "前年同月購入単価",
"年", "月", "年度", "経過月"
];
const aggregatedData = {};
const fiscalYearSummary = {};
const outputData = [headers];
// データ集計
for (let i = 1; i < data.length; i++) {
const [orderDate, , , , orderCode, , , , sales] = data[i]; // 正しいカラムの順番で取得
if (!orderDate || !sales || isNaN(sales)) continue; // 売上がNaNならスキップ
const date = new Date(orderDate);
const year = date.getFullYear();
const month = date.getMonth() + 1;
const yearMonth = `${year}-${String(month).padStart(2, '0')}`;
const fiscalYear = (month >= 4) ? year : year - 1;
if (!aggregatedData[yearMonth]) {
aggregatedData[yearMonth] = { sales: 0, uniqueOrders: new Set(), year, month, fiscalYear };
}
if (!fiscalYearSummary[fiscalYear]) {
fiscalYearSummary[fiscalYear] = { salesByMonth: {}, uniqueOrdersByMonth: {} };
}
aggregatedData[yearMonth].sales += sales;
aggregatedData[yearMonth].uniqueOrders.add(orderCode);
if (!fiscalYearSummary[fiscalYear].salesByMonth[month]) {
fiscalYearSummary[fiscalYear].salesByMonth[month] = 0;
fiscalYearSummary[fiscalYear].uniqueOrdersByMonth[month] = new Set();
}
fiscalYearSummary[fiscalYear].salesByMonth[month] += sales;
fiscalYearSummary[fiscalYear].uniqueOrdersByMonth[month].add(orderCode);
}
// 出力データの生成
for (const yearMonth in aggregatedData) {
const entry = aggregatedData[yearMonth];
const purchaseCount = entry.uniqueOrders.size;
const averageUnitPrice = purchaseCount > 0 ? Math.floor(entry.sales / purchaseCount) : 0;
const lastYearMonth = `${entry.year - 1}-${String(entry.month).padStart(2, '0')}`;
const lastYearEntry = aggregatedData[lastYearMonth] || { sales: 0, uniqueOrders: new Set() };
const lastYearSales = lastYearEntry.sales;
const lastYearPurchaseCount = lastYearEntry.uniqueOrders.size;
const lastYearAverageUnitPrice = lastYearPurchaseCount > 0 ? Math.floor(lastYearSales / lastYearPurchaseCount) : 0;
const elapsedMonth = entry.month >= 4 ? entry.month - 3 : entry.month + 9;
outputData.push([
yearMonth, // 年月
entry.sales, // 売上
purchaseCount, // 購入回数
averageUnitPrice, // 購入単価
lastYearSales, // 前年同月売上
lastYearPurchaseCount, // 前年同月購入回数
lastYearAverageUnitPrice,// 前年同月購入単価
entry.year, // 年
entry.month, // 月
entry.fiscalYear, // 年度
elapsedMonth // 経過月
]);
}
// データの書き込み
targetSheet.clear();
targetSheet.getRange(1, 1, outputData.length, outputData[0].length).setValues(outputData);
}
- aggregateSales() を実行すると、「集計結果」シートに日別売上合計が表示される
以下のように「集計データ」シートに集計されます。
Looker Studioでデータを可視化する
スプレッドシートをLooker Studioに接続
- 「集計データ」シートを選択した状態で、「拡張機能」からLookerStudioのレポートを作成する
- 作成すると以下のようなスプレッドシートができる。先ほど計算して集計されたカラムは、そのままディメンションやメジャーとしてデータに追加されています。
まとめ:この方法を活用して快適なデータ分析を実現
Looker Studioの計算フィールドを減らすことで、レポートの表示速度を大幅に向上できます。そのために、スプレッドシートとGASを活用し、データを事前に計算しておく方法が有効です。
✅ ポイントのおさらい
・Looker Studioの計算フィールドを減らすことで、表示速度を改善
・スプレッドシートでデータを事前に計算し、負荷を軽減
・GASを活用して自動計算し、効率的なデータ集計を実現
この方法を取り入れれば、Looker Studioのストレスフリーなデータ可視化が可能になります!ぜひ試してみてください。