Google 应用程序脚本 - 获取常量 "Yesterday"

Google App Scripts - Getting a constant "Yesterday"

我正在尝试设置一个常量“昨天”,但该脚本未被识别为函数(我正在使用 Google 应用程序脚本)。 我尝试了不同的语法,包括:

const yesterday = today.setDate(-1);

const yesterday = new Date(today.setDate(-1));

但都没有用。 我很确定这应该是一个小改动,但我不知道如何解决这个问题。 非常感谢您提供一点帮助,谢谢!

const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('My Report');

  function insertColumn() {
  const range = sheet.getRange('H1:H69').getValues();
  const newrange = sheet.getRange('I1:I69');
  const rules = sheet.getConditionalFormatRules();
  const today = Utilities.formatDate(new Date(), "GMT+7", "MM/dd/yyyy");
  const yesterday = new Date(today.setDate(-1));
getYesterday() {
  let date = new Date();
  let yesterday_milliseconds = date.getTime() - 1000 * 60 * 60 * 24;
  let yesterday = new Date();
  yesterday.setTime(yesterday_milliseconds);
  let strYear = yesterday.getFullYear();
  let strDay = yesterday.getDate();
  let strMonth = yesterday.getMonth() + 1;
  if (strMonth < 10) {
    strMonth = "0" + strMonth;
  }
  if (strDay < 10) {
    strDay = "0" + strDay;
  }
  return strYear + "-" + strMonth + "-" + strDay;
},
function yesterday() {
  let dt = new Date();
  Logger.log(new Date(dt.setDate(dt.getDate() - 1)));
}

来自 MDN setDate() returns:1970 年 1 月 1 日 00:00:00 UTC 和给定日期之间的毫秒数...不是日期对象

您的问题是 today 不是 Date 对象,因为您已经在其上调用了 Utilities.formatDate。这就是您在尝试使用 today.setDate() 时遇到错误的原因。所以你需要使用另一个变量来计算 yesterday。例如:

const tmp = new Date(); 
const yesterday = new Date(tmp.setDate(tmp.getDate()-1))

另请注意 setDate(-1) sets the date to the penultimate day in the previous month (e.g. March 30 when you are in April), you need to get the current date (using getDate) 并从中减去 1 以获得昨天的日期。