【问题标题】:Convert date format without timezone - Google app script (Javascript), Google spreadsheet转换没有时区的日期格式 - Google 应用脚本 (Javascript)、Google 电子表格
【发布时间】:2020-01-15 11:29:55
【问题描述】:

我正在研究 Google 电子表格和 LINE Message API (BOT) 之间的集成,其中 Google 应用脚本是后端。

我从 Google 电子表格中获取日期格式单元格并发送到 LINE 机器人,但消息回复显示不同的内容。 在 Google 电子表格

的单元格中

2020 年 1 月 5 日

在谷歌应用脚​​本中,我首先编写了代码

var colb =  ss.getSheets()[0].getRange(i+3, 2).getValue();

但是 LINE 消息,它默认发送包含时区的格式

2020 年 1 月 5 日星期日 00:00:00 GMT+0700 (ICT)

所以我编码了它

var colb =  Utilities.formatDate(ss.getSheets()[0].getRange(i+3, 2).getValue(), ss.getSpreadsheetTimeZone(), "dd/MM/YY");

这个是有效的,但是当单元格为空时它不起作用,我不知道为什么。所以有人请帮我解决这个问题。提前致谢

【问题讨论】:

  • 您能否澄清一下“不工作”的含义以及您期望的结果? formatDate 函数的第一个参数应为日期。当你得到一个空输入时,你希望你的脚本做什么?还是日期以外的其他东西(字符串、数字、...)?
  • 对此深表歉意,好吧,我期望的结果与电子表格单元格中的值相同。如果单元格的值是 2020 年 1 月 5 日,那么结果也应该是 1/5/2020,或者如果可能的话,我想要它2020 年 1 月 5 日星期日。如果单元格是 emply,我希望空白 " "

标签: javascript google-apps-script google-sheets line bots


【解决方案1】:

如果您需要colb在日期转换不起作用时包含原始值(包括空),您可以这样做:

var value = ss.getSheets()[0].getRange(i+3, 2).getValue();
var colb = (typeof value == "object" && value instanceof Date) ? Utilities.formatDate(value, ss.getSpreadsheetTimeZone(), "dd/MM/YY") : value;

【讨论】:

    【解决方案2】:

    如果单元格为空并且您想使用 Utilities.formatDate 我会这样做:

    var colb =  " " || Utilities.formatDate(ss.getSheets()[0].getRange(i+3, 2).getValue(), ss.getSpreadsheetTimeZone(), "dd/MM/YY");
    

    所以如果单元格中没有值,只需分配默认值“”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 2021-03-20
      • 1970-01-01
      相关资源
      最近更新 更多