Google Looker Studio × Gemini API とは?
ビジネスの意思決定に欠かせないデータレポート。Google Looker Studio(旧 Google Data Studio)は、各種データソースを可視化できる無料の BI ツールとして多くの企業に利用されています。しかし、グラフや表を眺めるだけでは「なぜ売上が下がったのか」「次のアクションは何か」といったインサイトを導き出すには、まだ人間の解釈が必要でしました。
Gemini API を組み合わせることで、この分析プロセスを自動化できます。Google Sheets をデータハブとして活用し、Looker Studio のデータを Gemini API に送信してAI分析コメントを生成し、その結果をレポートに自動反映させるパイプラインを構築できるのです。
必要なもの・事前準備
実装を始める前に、以下を揃えておきましょう。
Google アカウント(無料)
Looker Studio、Google Sheets、Apps Script はすべて Google アカウントで利用できます。Google Workspace 契約は必須ではありませんが、ビジネス利用では Workspace を推奨します。
Gemini API キー
Google AI Studio にアクセスし、「API キーを作成」から取得します。無料枠では1分あたり 60 リクエスト、1日 1,500 リクエストまで利用可能です(2026年4月時点)。
Google Sheets のデータソース
Looker Studio がデータソースとして参照している Google Sheets を使います。既存のシートをそのまま活用できます。
全体のアーキテクチャ
Google Sheets(データ)
↓ Apps Script が定期実行
Gemini API(AI分析)
↓ 分析コメントをシートに書き込み
Looker Studio(可視化)
↓ シートを参照して最新コメントを表示
ビジネスレポート完成
Step 1:Google Sheets とデータソースの準備
まず、Looker Studio と連携する Google Sheets を用意します。既存のレポート用シートがあればそれを使用し、Gemini の分析コメントを書き込む専用のシート「AI_Analysis」を追加します。
シート構成例
シート1: Sales_Data(売上データ)
A列: 日付
B列: 売上金額
C列: 商品カテゴリ
D列: 顧客数
シート2: AI_Analysis(AI分析結果)
A列: 分析日時
B列: 対象期間
C列: AI分析コメント(日本語)
D列: 推奨アクション
Looker Studio 側では、この AI_Analysis シートをデータソースとして追加し、分析コメントをテキストウィジェットに表示するように設定します。
Step 2:Apps Script で Gemini API を呼び出す
Google Sheets を開き、「拡張機能」→「Apps Script」から、以下のコードを貼り付けます。
// ============================================================
// Gemini API × Looker Studio 自動分析スクリプト
// Google AI Studio から取得した API キーを設定してください
// ============================================================
const GEMINI_API_KEY = "YOUR_GEMINI_API_KEY"; // ← AI Studio から取得
const GEMINI_MODEL = "gemini-2.5-flash";
const ANALYSIS_SHEET = "AI_Analysis";
const DATA_SHEET = "Sales_Data";
/**
* メイン関数:データを取得し Gemini API で分析してシートに書き込む
* トリガーで毎日 09:00 に自動実行するよう設定します
*/
function runGeminiAnalysis() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const data = fetchSalesData(ss);
if (!data || data.length === 0) {
Logger.log("分析対象データが見つかりませんでした");
return;
}
// 直近7日分のサマリーを作成
const summary = buildDataSummary(data);
Logger.log("データサマリー: " + summary);
// Gemini API に送信して分析コメントを生成
const analysis = callGeminiApi(summary);
// 結果を AI_Analysis シートに書き込み
writeAnalysisResult(ss, analysis);
Logger.log("✅ 分析完了 — シートに書き込みました");
}
/**
* Sales_Data シートから直近7日のデータを取得する
*/
function fetchSalesData(ss) {
const sheet = ss.getSheetByName(DATA_SHEET);
if (!sheet) throw new Error(DATA_SHEET + " シートが見つかりません");
const rows = sheet.getDataRange().getValues();
const header = rows[0]; // 1行目はヘッダー
const today = new Date();
const oneWeekAgo = new Date(today - 7 * 24 * 60 * 60 * 1000);
// 直近7日分のデータをフィルタリング
return rows.slice(1).filter(row => {
const dateVal = row[0];
if (!dateVal) return false;
const d = dateVal instanceof Date ? dateVal : new Date(dateVal);
return d >= oneWeekAgo && d <= today;
});
}
/**
* データを Gemini API に送りやすいテキストサマリーに変換する
*/
function buildDataSummary(data) {
let totalSales = 0;
let totalCustomers = 0;
const catMap = {};
data.forEach(row => {
const sales = parseFloat(row[1]) || 0; // B列: 売上
const category = String(row[2] || "不明"); // C列: カテゴリ
const customers= parseFloat(row[3]) || 0; // D列: 顧客数
totalSales += sales;
totalCustomers += customers;
catMap[category] = (catMap[category] || 0) + sales;
});
const catLines = Object.entries(catMap)
.sort((a, b) => b[1] - a[1])
.map(([cat, s]) => ` - ${cat}: ¥${s.toLocaleString()}`)
.join("\n");
return [
`【直近7日間の売上サマリー】`,
`合計売上: ¥${totalSales.toLocaleString()}`,
`合計顧客数: ${totalCustomers}人`,
`カテゴリ別売上:`,
catLines,
`データ件数: ${data.length}行`,
].join("\n");
}
/**
* Gemini API を呼び出して AI 分析コメントを取得する
*/
function callGeminiApi(summary) {
const prompt = `
あなたはビジネスアナリストです。以下の売上データを分析し、以下の形式で回答してください。
【データ】
${summary}
【出力形式】
1. 現状分析(2〜3文で要点をまとめてください)
2. 注目すべきポイント(箇条書き2〜3点)
3. 推奨アクション(具体的な施策を1〜2点)
簡潔かつ実用的な内容でお願いします。
`.trim();
const url = `https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_MODEL}:generateContent?key=${GEMINI_API_KEY}`;
const payload = {
contents: [{ parts: [{ text: prompt }] }],
generationConfig: {
temperature: 0.3, // 分析用途は低め(一貫性重視)
maxOutputTokens: 1024,
},
};
const response = UrlFetchApp.fetch(url, {
method: "POST",
contentType: "application/json",
payload: JSON.stringify(payload),
muteHttpExceptions: true,
});
const statusCode = response.getResponseCode();
if (statusCode !== 200) {
const errorBody = response.getContentText();
throw new Error(`Gemini API エラー (HTTP ${statusCode}): ${errorBody}`);
}
const result = JSON.parse(response.getContentText());
// レスポンスからテキストを抽出
const text = result?.candidates?.[0]?.content?.parts?.[0]?.text;
if (!text) throw new Error("Gemini API からテキストが返されませんでした");
return text;
}
/**
* 分析結果を AI_Analysis シートに書き込む
*/
function writeAnalysisResult(ss, analysisText) {
let sheet = ss.getSheetByName(ANALYSIS_SHEET);
if (!sheet) {
sheet = ss.insertSheet(ANALYSIS_SHEET);
// ヘッダー行を追加
sheet.appendRow(["分析日時", "対象期間", "AI分析コメント", "推奨アクション"]);
}
const now = new Date();
const period = `${formatDate(new Date(now - 7 * 24 * 60 * 60 * 1000))} 〜 ${formatDate(now)}`;
// 分析コメントと推奨アクションを分割(簡易パース)
const lines = analysisText.split("\n").filter(l => l.trim());
const mainComment = lines.slice(0, Math.ceil(lines.length * 0.7)).join("\n");
const actionPart = lines.slice(Math.ceil(lines.length * 0.7)).join("\n");
sheet.appendRow([now, period, mainComment, actionPart]);
}
/** 日付を YYYY-MM-DD 形式にフォーマット */
function formatDate(d) {
return Utilities.formatDate(d, "Asia/Tokyo", "yyyy-MM-dd");
}コードのポイント
コードの重要な点を整理します。GEMINI_API_KEY には AI Studio で発行したキーを設定してください。GEMINI_MODEL は gemini-2.5-flash を使っているため、高速かつコスト効率良く動作します。temperature: 0.3 はデータ分析用途に適した低い値で、一貫性のある分析結果を得られます。
Step 3:定期実行トリガーの設定
毎日自動で分析を実行するには、Apps Script のトリガーを設定します。
Apps Script エディタで「時計アイコン(トリガー)」をクリックし、以下のように設定します。
- 実行する関数:
runGeminiAnalysis - イベントのソース:時間主導型
- 時間ベースのトリガーのタイプ:日タイマー
- 時刻:午前 9 時〜10 時
これで毎朝 9 時に自動分析が実行され、AI_Analysis シートが更新されます。
Step 4:Looker Studio にAI分析コメントを表示する
Looker Studio でレポートを開き、「データを追加」から同じ Google Sheets の AI_Analysis シートを追加します。
キャンバス上に「テキスト」ウィジェットを追加し、AI分析コメント フィールドを配置します。最新行のコメントが自動表示されるよう、日付フィールドで降順に並べ替えて「1 行のみ表示」設定にします。
ビジュアル活用のヒント
Looker Studio のコントロールパネルに AI 分析エリアを設置することで、データグラフの隣に AI コメントを並べた一覧性の高いダッシュボードが完成します。月次・週次のレポートを経営層に共有する際、グラフに加えてAIの解釈が自動付与されるため、報告資料の質が大幅に向上します。
よくあるエラーと対処法
実装時によく遭遇するエラーとその解決策をまとめます。
エラー1:「QUOTA_EXCEEDED」が発生する
無料枠の場合、1分あたり 60 リクエストの制限があります。Utilities.sleep(2000) を API 呼び出し前に追加して、リクエスト間隔を空けましょう。大量データを一度に送る場合は、バッチ処理に分割することをおすすめします。
エラー2:「The caller does not have permission」が表示される
API キーの設定ミスが多い原因です。AI Studio で発行したキーの前後にスペースが入っていないか確認し、スクリプトプロパティ(「プロジェクトの設定」→「スクリプトプロパティ」)に保存する方法も安全性が高くおすすめです。
エラー3:Looker Studio のデータが更新されない
Looker Studio は Google Sheets のキャッシュを参照します。レポート画面右上の「データを更新」ボタンを押すか、データソース設定で「キャッシュの更新頻度」を短縮してください。
全体を振り返って
Google Looker Studio と Gemini API を組み合わせることで、データレポートへのAI自動分析コメント付与が実現します。今回紹介した実装のポイントをまとめます。
- Apps Script が Sheets のデータを取得 → Gemini API で分析 → 結果をシートに書き込みというシンプルなパイプライン
- トリガー設定で毎日自動実行が可能
- Looker Studio はシートを参照するだけなので特別なプラグイン不要
- Gemini 2.5 Flash を使うことでコスト効率よく高速に分析できる
このパイプラインを応用すれば、Google Analytics データの自動解釈、在庫管理レポートへのAI提案、顧客行動データの自動セグメント分析なども実現できます。
さらに Google Workspace 全体にわたる自動化ワークフローに発展させたい方は、Gemini Apps Script クロスプロダクト自動化ガイド もぜひご覧ください。