GoogleAnalytics4(GA4)の計測データをアドオンでGoogleスプレッドシートに自動出力し、日々のアクセス解析を行っている方は多いでしょう。
ただ、データが何ヶ月分も蓄積してくると「スプレッドシートを開くたびに当日のセルまでスクロールするのが手間」と感じる場面が出てきます。
そこで本記事では、GoogleAppScript(GAS)を使って、シートを開いたときに自動で当日セルにジャンプする方法をコード付きで解説します。

読みたい箇所へ移動する
スクリプトの基本仕様
- トリガー:スプレッドシートを開いたタイミングで発火する
onOpen()
関数(GASの標準イベント)を使用 - 対象シート:「GA4デイリーレポート」という名前のシートを自動で検出
- 検索対象列:B列(2行目以降)を日付セルとして扱い、当日または2日前の日付と一致するセルを検索
- 日付の正規化:時刻情報を取り除き、日付のみを比較するため、各値を
normalize()
関数で加工 - 選択処理:該当セルを自動で選択状態にして、視認性を向上
実装手順
- リポンから「拡張機能」>「AppScript」をクリック
- AppScriptの編集画面にて、名前を編集する
- エディターに下記コードを貼り付ける
- コードを保存した後、対象スプレッドシートを再読み込みする
/**
* スプレッドシートを開いた際に、当日の日付セル(B列)へ移動する
* 当日データがない場合は2日前にフォールバック
* @returns {void}
*/
function onOpen() {
const ss = SpreadsheetApp.getActive();
const sheet = ss.getSheetByName('GA4デイリーレポート');
if (!sheet) return;
sheet.activate();
// 検索対象となる日付リストを取得(B2以降)
const lastRow = sheet.getLastRow();
if (lastRow < 2) return;
const values = sheet.getRange(2, 2, lastRow - 1).getValues().flat();
// 日付を比較できる形に正規化する関数
const normalize = (val) => {
let d = val;
if (!(d instanceof Date)) {
d = new Date(d);
}
if (!(d instanceof Date) || isNaN(d)) return null;
d.setHours(0, 0, 0, 0);
return d.getTime();
};
// 今日と2日前の日付タイムスタンプ
const today = new Date(); today.setHours(0, 0, 0, 0);
const fallback = new Date(today);
fallback.setDate(today.getDate() - 2);
const tsToday = today.getTime();
const tsFallback = fallback.getTime();
// オフセット検索(当日優先、次に2日前)
let offset = values.findIndex(v => normalize(v) === tsToday);
if (offset < 0) {
offset = values.findIndex(v => normalize(v) === tsFallback);
}
if (offset < 0) return; // どちらも見つからないなら終了
// シート上の行番号に変換して選択
const targetRow = offset + 2;
const targetRange = sheet.getRange(targetRow, 2);
ss.setActiveSelection(targetRange);
}
まとめ
- GA4のデータを活用していると、スプレッドシートの可視性や操作性が課題になる
- GoogleAppScriptを使えば、当日または直近の日付セルへ自動移動することで作業効率が向上する
- 処理は軽量で、既存シートにすぐ導入可能
参考資料
シンプルなトリガー | Apps Script | Google for Developers
Class Sheet | Apps Script | Google for Developers