Events 如何仅在有人添加新行时运行脚本 情况:
我有以下脚本,它在OnEdit中运行,但我想调整此脚本,使其仅在有人向工作表添加新行时运行 脚本: 如果可能,仅当有人在工作表末尾使用boton add include添加新行时才执行此脚本Events 如何仅在有人添加新行时运行脚本 情况:,events,google-apps-script,google-sheets,Events,Google Apps Script,Google Sheets,我有以下脚本,它在OnEdit中运行,但我想调整此脚本,使其仅在有人向工作表添加新行时运行 脚本: 如果可能,仅当有人在工作表末尾使用boton add include添加新行时才执行此脚本 致以最诚挚的问候,有一个特殊的触发器用于检测此类更改: 您甚至可以按照文档中的描述以编程方式创建它: var sheet = SpreadsheetApp.getActive(); ScriptApp.newTrigger("myFunction") .forSpreadsheet(sheet)
致以最诚挚的问候,有一个特殊的触发器用于检测此类更改: 您甚至可以按照文档中的描述以编程方式创建它:
var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger("myFunction")
.forSpreadsheet(sheet)
.onChange()
.create();
然后是这样一个函数,它会在每次更改时被调用,它会查看行数,如果行数发生了更改,则会执行某些操作……如果更改是其他更改,则不会执行任何操作
您可以添加更多条件来处理其他情况,例如,在删除的id行中要做什么
function myFunction(){
var numRows = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getMaxRows();
if(ScriptProperties.getProperty('numberOfRows')){
var nRows = Number(ScriptProperties.getProperty('numberOfRows'));
if(nRows<numRows){
//do something because rows have been added in this sheet
ScriptProperties.setProperty('numberOfRows',numRows);// update value with current value
}
}
ScriptProperties.setProperty('numberOfRows',numRows);// create a start value with current value of simply update if the trigger was called for another reason
}
您是否考虑过使用
onChange()
事件中参数changeType
中可用的INSERT\u ROW
。。。请随意发布另一个答案,您的想法更好,因为它使用了GAS direct方法。您好,当有人向工作表添加或插入新行时,我正在尝试将脚本集成到我的功能中,但不起作用。。。我不知道我需要把剧本放在哪里。。仍在工作..您必须在脚本编辑器中单独插入函数(即2个单独的函数),只需运行forst one一次即可创建触发器。之后,它将是全自动的。如果你想让它采取一些行动,调用第三个函数(你可能已经有了这个函数),我把“做点什么”放在这里,Serge,现在正在工作。。。OnChange()值存在于Resurce>Proyect触发器中。。。注意:当我使用createthetrigger部分时,系统会在同一个触发器上创建它10次
function myFunction(){
var numRows = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getMaxRows();
if(ScriptProperties.getProperty('numberOfRows')){
var nRows = Number(ScriptProperties.getProperty('numberOfRows'));
if(nRows<numRows){
//do something because rows have been added in this sheet
ScriptProperties.setProperty('numberOfRows',numRows);// update value with current value
}
}
ScriptProperties.setProperty('numberOfRows',numRows);// create a start value with current value of simply update if the trigger was called for another reason
}
function initializeTrigger(){ // run this only once to create a trigger if necessary
var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger("myFunction")
.forSpreadsheet(sheet)
.onChange()
.create();
}
function myFunction(e){
Logger.log(e.changeType);
if(e.changeType=='INSERT_ROW'){
// do Something
Browser.msgBox('New row(s) added');
}
}