Google表格数据移动器脚本的不一致问题

时间:2018-06-21 17:18:19

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

在许多站点上进行了大约2到3个小时的挖掘之后,我将这个起作用的脚本拼凑在一起,以观看工作表上的“输入”列,并使用onEdit()将该数据放到该列中时将其进一步移动将工作表下移到该特定行中的下一个可用单元格。

function onEdit(e) {
  var s = e.source.getActiveSheet();
  var sheetName = 'Pricing Chart';
  var colToWatch = 5;
  var copyFrom = 5;
  var nextEmptyCol = colToWatch + 22;
  var emptyCellCheck = s.getRange(e.range.rowStart, nextEmptyCol,1,1);
  
  if (s.getName() !== sheetName || e.range.columnStart !== colToWatch) return;
  
  while (emptyCellCheck.isBlank() !== true){
    nextEmptyCol++;
    var emptyCellCheck = s.getRange(e.range.rowStart, nextEmptyCol,1,1);
  }
  
  if (emptyCellCheck.isBlank()){
    s.getRange(e.range.rowStart, copyFrom,1,1)
    .copyTo(s.getRange(e.range.rowStart, nextEmptyCol,1,1), {contentsOnly: true}),
      s.getRange(e.range.rowStart, copyFrom,1,1).clear({contentsOnly: true});
  } 
}

具体示例:

在单元格E5中,键入“ 222”。如果AA5为空,则会将“ 222”复制到AA5中,然后清除E5。如果AA5不为空,它将先检查AB5,然后是AC5,以此类推,直到找到一个空单元格。然后在我的特定工作表上,它使用该行中的所有数据并显示各种计算(平均值,最大值等),以便可以看到这些数据,但所有单独的输入都被隐藏在幕后。对于以易于查看和易于与他人共享的格式保存大量有关许多不同变量的数据列表很有用。

问题是...有时它会按照预期的那样工作,找到下一个可用的单元格,复制数据,并擦除原始的输入单元格(例如E5)。但是,有时,它还会擦除将数据复制到的单元格(例如AB5)。该脚本每十次迭代大约进行一次或两次。

因此,我想知道是否有人可以看一下我的脚本并为我提供优化脚本或做得更好的提示,以便脚本能够始终如一地正确运行。

0 个答案:

没有答案