Apps Script更新另一张工作表上特定列中的数据

时间:2019-07-10 16:12:36

标签: google-apps-script

此代码可用于更新“更新”日期的值以及与“ keyid”列值匹配的另一张纸上的列中的状态。按计划运行,测试数据检查最近5天内的日期。对于该日期范围内的那些项目,请使用新的更新日期和新状态更新目标表中的那些项目。

已添加注意:updateExistingRows()函数只是从定时触发器运行的主函数调用的一个步骤。主要功能有一个步骤,该步骤可在SQL服务器上运行存储的proc,以在每次流程运行时刷新主工作表(清除并重新填充工作表)。

这花了我一些时间,我很好奇是否有更好的做法使用app脚本来检查工作表之间的更改并进行更新。工作表没有相同的数据列。我发现大多数示例都在哪里添加行而不更新行中的特定元素。

注意:如果我没有在这些行中添加“ +1”:

targetTab.getRange(n+1,8) 

它在我的目标表上面的行上写了值。这是我的代码:

function updateExistingRows() {
  var date = new Date();
  var sss = SpreadsheetApp.openById('xxxxxxxx');
  var sourceTab = sss.getSheetByName('Sheet1'); 
  var srcrg = sourceTab.getDataRange();
  var srcvA = srcrg.getValues();
  var tss = SpreadsheetApp.openById('yyyyyyyy');
  var targetTab = tss.getSheetByName('Sheet3');
  var tarrg = targetTab.getDataRange();
  var tarvA = tarrg.getValues();
  var source_data = sourceTab.getDataRange().getValues();
  var target_data = targetTab.getDataRange().getValues();

  for (var n = 1 ; n < source_data.length ; n++) {
    if (source_data[n][11] >= new Date(date.getTime()-5*(24*3600*1000)) ) {
      if (source_data[n][8] = target_data[n][5]) {
        var new_updated = source_data[n][11];
        var new_status = source_data[n][13];
        targetTab.getRange(n+1,8).setValue(new_updated);
        targetTab.getRange(n+1,10).setValue(new_status);
      }
    }
  }
}

0 个答案:

没有答案