无法通过谷歌应用脚​​本检测Google表格中的行插入?

时间:2017-09-23 07:52:51

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

我是谷歌应用脚​​本的新手。目前,我正在尝试创建一个插入行检测器,并根据它上面的行的值更新该行中的值。阅读文档&在网上的其他东西,我创建了以下代码。但问题在于它不起作用。

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

代码:

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]

1 个答案:

答案 0 :(得分: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