为了账号安全,请及时绑定邮箱和手机立即绑定

检测用户在Google电子表格中插入行或列并在脚本中做出反应

检测用户在Google电子表格中插入行或列并在脚本中做出反应

手掌心 2019-12-02 13:59:03
在Google Apps脚本中,基本工具之一是电子表格中的onEdit触发器,它使我们能够检测用户何时编辑单元格并对其进行反应。用户何时插入行或列怎么样?有办法检测到吗?那会触发一个onEdit吗?如果是这样,我想在ScriptDb中维护行数或列数,然后进行每次检查都可以,但是会非常耗时,因为getMaxRows()已经很慢了,因此到达ScriptDb的方法如下:好。你怎么看 ?
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

我最近刚刚使用了另一种方法。每次触发onEdit()时,它都会返回一个事件对象(e),该事件对象为您提供有关正在发生的事情的一些有价值的信息。


例如,它为您提供了范围,您可以从e.range中检索该范围。您可以从那里以许多不同的方式浏览并了解例如正在编辑的行。但是e对象中还有更多有用的数据。它为您提供了所编辑单元格的“ oldvalue”(e.oldValue)和新值(e.value)。


将所有这些信息混合在一起的一种可能方法是获取与您正在编辑的行相对应的范围,然后检查所有单元格是否为空(但您刚编辑的单元格)以及是否没有oldValue。


这不一定与电子表格的最后一行相对应,而与空白行相对应。如果您与填写数据的方式一致,那么这可能对您有用:


//val = inserted value (e.value);

//old = old Value (e.oldValue);

//col = number of column being edited

//arr = array with the indexes of the columns that should be completed so as to make a new row [0,1,2...n]

function isInsert(old, val, col, arr){

   if((typeof val != "object")&&!old&&(arr.some(isNotEmpty, col)))

     return true;

   else

     return false;

}


function isNotEmpty(el){

   if(this == el)

     return true;

}


查看完整回答
反对 回复 2019-12-02
  • 3 回答
  • 0 关注
  • 560 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信