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 以获得昨天的日期。
我正在尝试设置一个常量“昨天”,但该脚本未被识别为函数(我正在使用 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 以获得昨天的日期。