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

相關問題