【问题标题】:Google script onEdit in all pasted cells所有粘贴的单元格中的 Google 脚本 onEdit
【发布时间】:2017-08-18 11:21:43
【问题描述】:

当我将一个新纸箱添加到我的库存(ctn,在 F 列中)时,我一直在使用 oEdit 函数在 S 列中设置实际日期。

当我手动输入参考时它可以完美运行,但是当我一次粘贴几个参考纸箱时,脚本仅适用于第一个编辑的行。

如何管理所有粘贴行的执行脚本?

请按以下脚本查找:

function onEdit(ctn) {

var sheet = ctn.source.getActiveSheet();
var added_ctn = ctn.range;
var date_add = sheet.getRange("S" + added_ctn.getRow());

if (sheet.getName() !== 'SORTIE CENTRALE VERS AUBER'
    || added_ctn.columnStart != 6)        
    {return}

    date_add.setValue(new Date());

}

【问题讨论】:

  • 您的代码只执行一行 (added_ctn.getRow())。您应该对范围内的所有行进行循环。检查getHeightgetLastRow 方法。两者都应该可以帮助您发现受影响的行数。
  • 非常感谢您的快速回答!我会处理这个:)

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


【解决方案1】:

这可能是什么?

function onEditxx(e) 
{
  var sheet = e.source.getActiveSheet();
  if (sheet.getName() !== 'SORTIE CENTRALE VERS AUBER'|| e.range.getColumn() != 6)
  {
    return;
  }
  for(var i=0;i<e.range.getNumRows();i++)
  {
    var offset=e.range.getRow() + i;
    sheet.getRange('S'+ offset).setValue(new Date());
  }
}

【讨论】:

  • 嗨库珀,非常感谢。不幸的是,结果是一样的。它仅将日期放在第一个粘贴的行中。我一直在努力:)
  • 我第一次使用了太多你的代码。范围没有 columnStart。但是我还是要假设你想把它放在 S 列。顺便说一下 range.getRow() 总是返回左上角的行。
  • 是的,它运行良好。非常感谢您提供的信息,我现在了解更多了:)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多