让Google表格在多列中自动更新时间有些麻烦

时间:2018-12-11 07:40:17

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

此代码有点麻烦。它的意思是自动输入2个特定列中的单元格更新到该单元格右侧的时间。它只与脚本一起工作,因为其中一个单元是在编辑时触发的,但是当我将它们放入函数中时却没有,因此我可以一次运行多个。

function onEdit(e){
 myFunction1();
 myFunction2();
}
function myFunction1()
{
  var sheet = e.source.getActiveSheet();
  if (sheet.getName() == "Dispatch Log")
  {
    var actRng = sheet.getActiveRange();
    var editColumn = actRng.getColumn();
    var rowIndex = actRng.getRowIndex();
    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
    var dateCol = headers[0].indexOf("Time Dispatched") + 1;
    var orderCol = headers[0].indexOf("Dispatched to Location") + 1;
    if (dateCol > 0 && rowIndex > 1 && editColumn == orderCol)
    {
      sheet.getRange(rowIndex, dateCol).setValue(Utilities.formatDate(new Date(), "GMT-8", "MM-dd-yyyy hh:mm"));
    }
  }
}
function myFunction2()
{
  var sheet = e.source.getActiveSheet();
  if (sheet.getName() == "Dispatch Log") 
  {
    var actRng = sheet.getActiveRange();
    var editColumn = actRng.getColumn();
    var rowIndex = actRng.getRowIndex();
    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
    var dateCol = headers[0].indexOf("Time 1") + 1;
    var orderCol = headers[0].indexOf("Status 1") + 1;
    if (dateCol > 0 && rowIndex > 1 && editColumn == orderCol)
    {
      sheet.getRange(rowIndex, dateCol).setValue(Utilities.formatDate(new Date(), "GMT-8", "MM-dd-yyyy hh:mm"));
    }
  }
}

任何帮助将不胜感激,我对Java脚本还是很新的

1 个答案:

答案 0 :(得分:0)

我认为您应该将事件e作为函数参数传递。

function onEdit(e){
  myFunction1(e);
  myFunction2(e);
}
function myFunction1(e)
{
  ...

希望它会有所帮助:)