假的Browser.msgBox调用如何影响GAS中的输出?

时间:2017-07-27 18:40:14

标签: google-apps-script google-sheets

我有一个脚本可以将数据从一个工作表移动到另一个工作表,因此必须在第二个工作表中插入适当数量的行来考虑第一个工作表中的数据。我遇到了一个问题,由于我不太了解的原因,数据在第二张表中重复,例如如果原始工作表中有94行,则第二行包含这94行,然后在右下方另外包含94行,具有完全相同的数据。我的代码是:

function moveToEntrySheet(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var rawRow = 2;

  var entrySheet = ss.getSheetByName('Sheet2');
  var rawSheet = ss.getSheetByName('Sheet1');

  var entryRow = 4;
  var numEntries = rawSheet.getLastRow() - 1;
  if (numEntries <= 0){
    return;
  }
  Browser.msgBox(numEntries);
  entrySheet.insertRowsBefore(entryRow, numEntries);
  Browser.msgBox(numEntries);
  var entryRange = entrySheet.getRange(4, 2, numEntries, 6);
  var vals = rawSheet.getRange(2, 1, numEntries, 6).getValues();
  Browser.msgBox(numEntries);
  entryRange.setValues(vals);
}

为了尝试调试这个,我在我的代码中调用了Browser.msgBox(),以确保numEntries是预期的数字(94),它确实出现在我调用的3个点中的每个点上奇怪的是,当我通过调用msgBox()来运行这个函数时,条目只被拉到另一个工作表一次。如果我保持第一次调用它的工作方式相同,如果我将第二次或第三次调用保持为两倍,则插入应插入的行数,但数据本身不会复制,本质上在表中给出n个空行,其中n是表1中的数据行数。如何调用Browser.msgBox()以这种方式影响副本,如何避免副本重复?谢谢!

0 个答案:

没有答案