首页 > 解决方案 > Google表格数据移动器脚本不一致的问题

问题描述

在对许多站点进行了大约两到三个小时的挖掘之后,我将这个功能脚本拼凑在一起,以观察工作表上的“输入”列,并使用 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)。大约每十次脚本迭代一次或两次。

所以,我想知道是否有人可以查看我的脚本并给我一些优化它的提示,或者只是做得更好,以便脚本始终如一地正确运行。

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


推荐阅读