Sol*_*ion 3 javascript google-sheets google-apps-script
目标: 我使用以下代码来简单测试是否能够提取正确的日期和天数。
function myFunction() {
const spreadSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Purchases (Beta)');
const getDate = new Date(spreadSheet.getRange('B4').getValue());
const getDays = (new Date(getDate.getFullYear(), getDate.getMonth() + 1, 0)).getDate();
Logger.log(getDate);
Logger.log(getDays);
}
Run Code Online (Sandbox Code Playgroud)
代码的意图: getDate 应该从单元格 B4 获取日期,其中包含日期格式的值“2020-11-01”。对于getDays,它应该根据B4单元格的设置值来获取天数。
问题: 当我尝试注销 getDate 的结果时,它显示为:Sat Oct 31 20:00:00 GMT-04:00 2020。我不明白,因为 B4 中的值是 2020-11-01。
问题: 我想了解为什么会发生这种情况,并想知道如何根据 B4 单元格中的内容输出正确的日期。
有人可以帮忙吗?
Sat Oct 31 20:00:00 GMT-04:00 2020
当我看到从单元格值检索的值时2020-11-01
,我认为在您的情况下,Google Apps 脚本项目的时区可能与 Google 电子表格的时区不同。为了检查这一点,请使用以下脚本。
console.log(Session.getScriptTimeZone())
console.log(SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone())
Run Code Online (Sandbox Code Playgroud)
Sat Oct 31 20:00:00 GMT-04:00 2020
,在您的情况下,Google Apps Script 项目的时区可能是America/New_York
。关于这一点,当使用新的 IDE 创建新的 Google Apps 脚本项目时,默认时区变为America/New_York
. 我不确定这是一个错误还是当前的规范。
我认为从上述情况来看,当时区更改时,您的问题可能会得到解决。那么下面的修改如何呢?
首先,请从电子表格中检查您的时区。在当前阶段,当电子表格创建为新电子表格时,您的时区已设置。
console.log(SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone())
Run Code Online (Sandbox Code Playgroud)
下一步,请将您的时区复制并粘贴到 Google Apps 脚本项目中。appsscript.json
在这种情况下,请使用检索到的时区修改清单文件 ( )。参考号
"timeZone": "###", <--- Please set your timezone here.
Run Code Online (Sandbox Code Playgroud)
完成上述设置后,请再次测试您的脚本。
当然,我认为您可以使用 Google Apps Script 项目的时区来设置 Google Spreadsheet 的时区。但是,在这种情况下,Google Apps 脚本项目的时区可能与您的时区不同。请小心这一点。
在问题跟踪器中,我可以确认新 IDE 的这个错误与 Google Apps 脚本项目的时区有关。
America/New_York
。在我的地区,它是Asia/Tokyo
.今天,当我对此进行测试时,我可以确认这个错误已被删除。当我创建新的 Google Apps 脚本项目时,timeZone
in的appsscript.json
值为Asia/Tokyo
。这对我来说是正确的价值观。
归档时间: |
|
查看次数: |
1665 次 |
最近记录: |