Google apps script 为什么GoogleSheets或GoogleAppScript不能为我提供与显示内容相同的时间值? 上下文

Google apps script 为什么GoogleSheets或GoogleAppScript不能为我提供与显示内容相同的时间值? 上下文,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个RESTful API,它是在谷歌工作表上用谷歌应用程序脚本构建的。其中一个doGet()请求将从一个以传统的列/行(类似数据库)方式(稍后描述的结构)存储的工作表选项卡中检索数据。简单地说,doGet()将调用另一个函数来获取数据,然后将该数据编码为客户端的JSON响应 表中的数据 这就是工作表上的数据 日期 位置 移位 名称 开始 结束 4-1-2021 可湿性粉剂 坎图尔一号 丹尼 9:00 17:00 4-1-2021 BK 巴克瑞一世 内奥米 9:00 17:00 4-1-20

我有一个RESTful API,它是在谷歌工作表上用谷歌应用程序脚本构建的。其中一个
doGet()
请求将从一个以传统的列/行(类似数据库)方式(稍后描述的结构)存储的工作表选项卡中检索数据。简单地说,
doGet()
将调用另一个函数来获取数据,然后将该数据编码为客户端的JSON响应

表中的数据 这就是工作表上的数据

日期 位置 移位 名称 开始 结束 4-1-2021 可湿性粉剂 坎图尔一号 丹尼 9:00 17:00 4-1-2021 BK 巴克瑞一世 内奥米 9:00 17:00 4-1-2021 CK 角一 菲德尔 7:00 16:00 ... ... ... ... ... ...
在JS中,日期总是有点复杂

你可以试试这个脚本,它对我有用。您可以更改日期和时区的格式

const sheet = SpreadsheetApp.openById("ZZZZZZZ");
const data = sheet.getSheetByName("XXX").getDataRange().getValues();
function getData(){
  data.forEach(dates => {
    var date = Utilities.formatDate(new Date(dates), "GMT+2", "MM/dd/yyyy");
    console.log(date);
  })
}
工作表:

输出:


在JS中,日期总是有点复杂

你可以试试这个脚本,它对我有用。您可以更改日期和时区的格式

const sheet = SpreadsheetApp.openById("ZZZZZZZ");
const data = sheet.getSheetByName("XXX").getDataRange().getValues();
function getData(){
  data.forEach(dates => {
    var date = Utilities.formatDate(new Date(dates), "GMT+2", "MM/dd/yyyy");
    console.log(date);
  })
}
工作表:

输出:


您收到日期的原因是因为
getValues
返回日期类型的对象。但是,此对象是根据表示其时间零点的图纸-
12/30/1899 0:00:00
改编的

因此,解决方法是使用
getDisplayValues
而不是
getValues
。这将最终返回图纸中显示的实际值

参考文献

您收到日期的原因是因为
getValues
返回日期类型的对象。但是,此对象是根据表示其时间零点的图纸-
12/30/1899 0:00:00
改编的

因此,解决方法是使用
getDisplayValues
而不是
getValues
。这将最终返回图纸中显示的实际值

参考文献

这个答案节省了很多时间。感谢您指出
getValues()
getDisplayValues()
之间的区别。这个答案节省了很多时间。感谢您指出
getValues()
getDisplayValues()
之间的区别。