首页 > 解决方案 > 用于合并列并在另一列中自动更新的谷歌工作表脚本

问题描述

我坚持编写一个谷歌表格脚本来自动组合两列和更新列。

我有两列“日期”和“时间”。这是手动输入(不能自动插入)。所以我想尝试如果两列都被填充,那么另一列“DateTime”将自动填充。

DATE                Time              DateTime
---------------------------------------------------------
2020-03-31          1:00PM           2020-03-31 13:00:00

我使用了这个函数> =concatenate(text(A2,"yyyy-mm-dd")&" "&text(B2,"hh:mm:ss"))

但我怎么能在脚本下写这个!这是我的 googlesheet 链接:https ://docs.google.com/spreadsheets/d/1acvlfNbhh-nU_nTb-9J1vZfGobStQohJSuMTynS6vJM/edit?usp=sharing

这是我的功能:

function onEdit(event)
{ 
  var timezone = "IST";
  var timestamp_format = "MM-dd-yyyy hh:mm:ss a"; // Timestamp Format. 
  var updateColName = "DATE";
  var updateColName2 = "Time";
  var timeStampColName = "DateTime";
  var sheet = event.source.getSheetByName('Sheet1'); //Name of the sheet where you want to run this script.


  var actRng = event.source.getActiveRange();
  var editColumn = actRng.getColumn();
  var index = actRng.getRowIndex();
  var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();

  var dateCol = headers[0].indexOf(timeStampColName);
  var updateCol = headers[0].indexOf(updateColName); 
  var updateCol2 = headers[0].indexOf(updateColName2);

  updateCol = updateCol+1;
  updateCol2 = updateCol2+1;


  if (dateCol > -1 && index > 1 &&  editColumn == updateCol) { // only timestamp if 'Last Updated' header exists, but not in the header row itself!
    if (dateCol > -1 && index > 1 && editColumn == updateCol2){

       var cell = sheet.getRange(index, dateCol + 1);
       var date = concatenate(text(A2,"yyyy-mm-dd")&" "&text(B2,"hh:mm:ss"))

       cell.setValue(date);
    }
  }
}

此功能不起作用。请任何人帮助我。

标签: google-apps-scriptgoogle-sheets

解决方案


如果您需要将时间值添加到日期值,您只需将它们加在一起(而不是连接)作为格式,它们在内部只是数字。

=ARRAYFORMULA(IF((A:A <> "") * (B:B <> ""), A:A + B:B,))

在此处输入图像描述

在列上,D:D我已将格式设置为Date time


推荐阅读