不带时间输入日期

时间:2019-01-30 22:20:46

标签: date google-apps-script timestamp

使用下面的代码,当第1列中的单元格被编辑时,Google工作表将在第6列中输入日期。还包括时间戳。

如何更改此代码,以便仅输入日期(日-月-年)?这样可以在工作表上按日期进行搜索。

  function onEdit(e) {
    var sheetName = 'Cases Allocation'; //name of the sheet the script should work on 
    var colToWatch = 1
    var colToStamp = 6 //timestamp in col A
    if (e.range.columnStart !== 1 || e.source.getActiveSheet()
        .getName() !== sheetName || e.value == '') return;
    var writeVal = e.value !== "" ? new Date(),: '';
    e.source.getActiveSheet()
        .getRange(e.range.rowStart, colToStamp)
        .setValue(writeVal);
}

2 个答案:

答案 0 :(得分:0)

您可以尝试使用Utilities.formatDate。此方法根据Java SE SimpleDateFormat类中描述的规范格式化日期。您可以访问日期和时间模式here。用法示例为:

// This formats the date as Greenwich Mean Time in the format
// year-month-dateThour-minute-second.
var formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'");
Logger.log(formattedDate);

请注意,使用Utilities.formatDate具有本post所述的以下效果:

  
      
  1. Utilities.formatDate不会更改单元格格式;它转换   其内容为文本。如果您要在中使用日期值   计算,您不希望将其转换为文本。
  2.   
  3. Utilities.formatDate需要一个来指定时区。如果你把   像“ GMT + 1”之类的东西,而您所在的国家/地区则实行夏令时   时间,您可以期待几个月后难以追踪的错误   后来。使用setNumberFormat时,日期值保持与   电子表格中的所有其他日期值,取决于其时区   设置。
  4.   

为避免这些情况,您还可以使用setNumberFormat(numberFormat)设置日期或数字格式。可接受的格式模式在Sheets API documentation中进行了描述。用法示例是:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var cell = sheet.getRange("B2");
// Always show 3 decimal points
cell.setNumberFormat("0.000");

答案 1 :(得分:0)

谢谢所有-尝试使用格式等,但是随后决定添加一列并拆分日期和时间,仅将日期放入新列中。