初心者必見!Google Apps Scriptで前日のデータを取得するテクニック

GASで前日のデータを取得したいんだけど、どうすればいいのかな?基本的なコードの書き方がいまいち分からなくて…。
猫男
猫男
catman
catman
よし、catmanが「GASで前日のデータを取得する」方法を教えてやろう。「gas 前日」を使えば君のスクリプトもグレードアップするはずだ。

日付を操作して前日を特定する方法

まずは、GASで日付を操作して前日を特定する必要がある。

前日の日付を取得する


function getYesterday() {
  const today = new Date();
  const yesterday = new Date(today);
  yesterday.setDate(yesterday.getDate() - 1);
  Logger.log(yesterday);
}

Dateオブジェクトを使って現在の日付を取得し、setDate()メソッドを使用して前日の日付を計算する。

スプレッドシートから前日のデータを取得

例えば、Googleスプレッドシートから前日のデータを取得するケースを考えよう。


function getYesterdayData() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = spreadsheet.getActiveSheet();
  const yesterday = getYesterday();
  
  const dataRange = sheet.getDataRange();
  const data = dataRange.getValues();
  
  data.forEach(row => {
    if (new Date(row[0]).toDateString() === yesterday.toDateString()) {
      Logger.log(row);
    }
  });
}

✅ まず、SpreadsheetApp.getActiveSpreadsheet()でスプレッドシートを取得し、その上でgetActiveSheet()で操作対象のシートを取得する。

なるほど!これでスプレッドシートの前日データを引っぱってこれるんですね!スマートなやり方が分かりました!
猫男
猫男
catman
catman
そうだ、君のスクリプトライフはこれで一段とカラフルになるはずだ。何かスクールで学ぶのとは一味違うだろう?

GASでスプレッドシートの操作をマスターする

GASを使いこなすためには、スプレッドシートの操作をマスターしておくことが重要だ。

スプレッドシートの基本メソッド

メソッド 用途
getRange(row, column) 特定のセル範囲を取得する
getValues() セル内容の配列を取得する
setValues(values) セル内容を設定する
スプレッドシートの操作がどんどんできるようになってきた!次はもっと高度なことも試してみたいな。
猫男
猫男
catman
catman
その意欲、実に素晴らしい。catmanも全力でサポートするさ。

練習問題:GASで特定の列の前日データを取得しよう

あなたのスプレッドシートの2列目に日付、3列目にデータがあるとします。前日のデータを取得して、前日であればそのデータをログに出力するスクリプトを書いてみましょう。

解答・解説


function getColumnYesterdayData() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = spreadsheet.getActiveSheet();
  const yesterday = new Date();
  yesterday.setDate(yesterday.getDate() - 1);
  
  const dataRange = sheet.getDataRange();
  const data = dataRange.getValues();
  
  data.forEach(row => {
    if (new Date(row[1]).toDateString() === yesterday.toDateString()) {
      Logger.log(row[2]);
    }
  });
}

このスクリプトでは、スプレッドシート内のすべての行をチェックし、日付が前日である行のデータ(3列目)をログに表示する。getRange()getValues()でデータを取得、ループで日付を比較する方式だ。