如果单元格中的值是日期,则运行自定义函数

use*_*458 3 google-sheets google-apps-script

我是Google脚本新手.我想检查单元格中的值是否为日期,如果是,则更改日期的默认格式,然后返回新的格式化日期值.

这是我想要的一个例子:

var activeCellValues = SpreadsheetApp.getActiveRange().getValues();
if ( activeCellValues = "Is_Type_Date")
       {   
          var activeCellValues = Utilities.formatDate(pubDateCell,"PST", "MM/dd/yyyy")
       }
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Mog*_*dad 8

使用isDate()下面的功能来完成您的要求.可以更改日期格式以满足其他需求.Utilities.formatDate()有关详细信息,请参阅[ ] [3].

// From http://stackoverflow.com/questions/1353684
// Returns 'true' if variable d is a date object.
function isValidDate(d) {
  if ( Object.prototype.toString.call(d) !== "[object Date]" )
    return false;
  return !isNaN(d.getTime());
}

// Test if value is a date and if so format
// otherwise, reflect input variable back as-is. 
function isDate(sDate) {
  if (isValidDate(sDate)) {
    sDate = Utilities.formatDate(new Date(sDate), "PST", "MM/dd/yyyy");
  }
  return sDate;
}
Run Code Online (Sandbox Code Playgroud)

在您的脚本中,您已经使用了该Range.getValues()函数,该函数将返回给定范围内的二维数据数组.(在您的情况下,您的整个工作表.)因此,您需要循环读取值并在您感兴趣的任何单元格上调用此函数,然后将信息写回电子表格.Google的文档和Stackoverflow都有很多这方面的例子.

  • 这个 `isValidDate` 是否仍然是测试值是否为 Date 对象的最简单方法?Apps Script 现在是否具有用于此目的的内置功能? (2认同)