使用 Google 脚本禁用自动日期解析

Gau*_*nia 5 javascript google-apps-script

我正在使用 Google 脚本来实现一些 Google 电子表格魔法,自动日期解析让我抓狂!我正在使用的工作表散布着各种日期格式,我宁愿将它们作为字符串处理,也不愿让 Google 在每次 .getValues() 调用时将它们转换为 Date 对象。经过大量搜索,我仍然找不到阻止/禁用 Google 自动解析这些字符串的方法。有人知道怎么做吗?

mwa*_*wag 2

是的,这是可能的,但您必须在调用 getValues之前进行更改,并使用 getDisplayValues():

  // do not use getValues(), which will convert dates
  var string_data = my_sheet.getRange(...).getDisplayValues();
Run Code Online (Sandbox Code Playgroud)

如果您只想在有限的情况下(例如日期)使用显示值,则可以复制值和显示,然后测试您的值是否是日期,如果是,则改用相应的显示:

  // 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. /sf/answers/1197717461/
        do_something_with(string_data(i, j));
      else
        do_something_with(cell_val);
    });
  });
Run Code Online (Sandbox Code Playgroud)

最后,如果您想将其用作工作表函数,则需要修改上面的内容,因为函数调用会在执行函数代码之前自动应用 getValues() 。要解决此问题,您可以使用https://webapps.stackexchange.com/a/30784中描述的技术