禁用使用Google脚本解析自动日期
-
24-10-2019 - |
题
我正在使用Google脚本作为一些Google电子表格魔术,并且自动日期解析使我发疯!我与之合作的表格上有各种日期格式,我宁愿将它们作为字符串打交道,而不是让Google将它们转换为每个.getValues()调用日期对象。经过大量的搜索,我仍然找不到停止/禁用Google自动解析这些字符串的方法。有人知道如何吗?
解决方案
是的,这是可能的,但是您必须进行更改 前 调用getValues,并使用getDisplayValues():
// do not use getValues(), which will convert dates
var string_data = my_sheet.getRange(...).getDisplayValues();
如果您只想在有限的日期中使用显示值,则可以复制值和显示,然后测试您的值是否为日期,如果是日期,请改用相应的显示:
// use getDisplayValues() for dates, getValues() otherwise
var string_data = my_sheet.getRange(...).getDisplayValues();
var value_data = my_sheet.getRange(...).getValues();
value_data.forEach(function(row_vals, i) {
row.forEach(function(cell_val, j) {
if(is_date(cell_val)) // see e.g. https://stackoverflow.com/a/17110249/3160967
do_something_with(string_data(i, j));
else
do_something_with(cell_val);
});
});
最后,如果要将其用作表函数,则需要修改,因为函数调用在执行功能代码之前会自动应用getValues()。为了解决这个问题,您可以使用所描述的技术 https://webapps.stackexchange.com/a/30784
其他提示
确实是不可能的,但是可行的解决方法是创建一个辅助表并插入公式,以将所有值与空字符串相连。然后 getValues()
在此辅助表上,使用后可以隐藏或删除脚本。
公式可以像在辅助纸的A1上设置它一样简单
=ArrayFormula(Sheet1!A:T&"")
使用此解决方法的警告是,如果用户为其日期设置自定义格式,则不会保留它们。但是,如果这很重要,您可以通过使用 getNumberFormats()
不隶属于 StackOverflow