0

我不熟悉Google应用脚本。目前,我试图创建一个插入行检测器,并根据行右边的值更新新行中的值。在线阅读文档&其他内容,我创建了以下代码。但问题是它不起作用。无法检测通过Google应用程序脚本在Google工作表中插入行吗?

如何创建一个通用行检测器或如何解决这个问题?

代码:

function onChange(e){ 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    sheet.getRange('A1').setBackground('green'); 
    //e.range.setNote('Last modified: ' + new Date().toLocaleTimeString() + ' getActiveUser().getEmail(): ' + Session.getEffectiveUser()); 
    if (e.changeType == "INSERT_ROW") { 
    sheet.getRange('A1').setBackground('red'); 
    // a row or many rows were inserted 

    if (e.source.getActiveSheet().getName() == "UIDAICheck") { 
     // Let's set the formula for calculating the End Date/Time of inserted lines  
     sheet.getRange('A1').setBackground('blue'); 
     var iRow = e.source.getActiveSheet().getActiveRange().getRow(); 
     var iRows = e.source.getActiveSheet().getActiveRange().getNumRows(); 

     var aRange = SpreadsheetApp.getActiveSpreadsheet().getActiveRange(); 
     aRange.setValue('555') 

    } 
    } 
} 

如果有喜欢的安装安装触发器或一些非代码相关的更改,请分享如何我也许能连接这些点,以及以能够对行会自动填入单元格的值插入?无可否认,我是新来的整个领土..

PS:我不认为这段代码的任何部分工作。这是我的执行成绩单:

[17-09-23 13:25:46:950 IST] SpreadsheetApp.getActiveRange() [0 seconds] 
[17-09-23 13:25:46:950 IST] Range.getRow() [0 seconds] 
[17-09-23 13:25:46:950 IST] Range.getLastRow() [0 seconds] 
[17-09-23 13:25:46:950 IST] Range.getColumn() [0 seconds] 
[17-09-23 13:25:46:950 IST] Range.getLastColumn() [0 seconds] 
[17-09-23 13:25:47:049 IST] Session.getActiveUser() [0.098 seconds] 
[17-09-23 13:25:47:050 IST] User.getEmail() [0 seconds] 
[17-09-23 13:25:47:050 IST] SpreadsheetApp.getActiveSpreadsheet() [0 seconds] 
[17-09-23 13:25:47:058 IST] Starting execution 
[17-09-23 13:25:47:103 IST] Execution failed: Script function not found: onEdit [0 seconds total runtime] 
+0

你知道是什么原因导致的onEdit错误?除onChange函数外还有其他代码吗?任何已安装的触发器? –

+0

不完全确定。那么最初我有一个onEdit触发器工作得很好,但代码编辑器运行按钮有能力只选择一个功能,所以我删除了它,并尝试运行此。无论如何,这段代码没有任何部分是专有的,并且可以很容易地由以前做过这件事的任何人重新创建。只要把它放在那里,以显示我的尝试。我认为如果你可以重新编写基本代码,它会更好。 – Deepak

回答

0

我还没有测试过,但试了一下。

function MyChange(e){ 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    if(sheet.getRange('A1').getBackground()!='#ff0000') 
    { 
    sheet.getRange('A1').setBackground('#00ff00'); 
    } 
    if (e.changeType == "INSERT_ROW") 
    { 
    sheet.getRange('A1').setBackground('#ff0000'); 
    if (sheet.getName()=="UIDAICheck") 
    { 
     sheet.getRange('A1').setBackground('#0000ff'); 
     sheet.getActiveRange().setValue('555'); 
    } 
    } 
} 

安装的onChange触发:

enter image description here

相关问题