簡體   English   中英

Google Scripts:非活動表格的onEdit?

[英]Google Scripts: onEdit of non active sheet?

在sheet1上有一個提交按鈕,它運行腳本並將數據移動到sheet2。

我正在加時間戳(在某些條件下防止覆蓋,以及無意義的時間戳),但是使用當前的腳本 -

問題(1):僅當我在sheet2上手動編輯(= sheet2處於活動狀態)時才會發生onEdit。

解決! (參見注釋)問題(2):onEdit不會限制到sheet2,也會在sheet1上發生。

function onEdit() {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
    if( sheet.getName() == "sheet2" ) {
        var activecell = sheet.getActiveCell();
        if( activecell.getColumn() == 2 ) {
            var pastecell = activecell.offset(0, -1);
            if( pastecell.getValue() === '' & activecell.getValue() != '' )
                pastecell.setValue(new Date()).setNumberFormat('YY-MM-DD HH:mm:ss');
        }
    }
}

有誰知道兩個修復這個?

非常感謝您的幫助和見解!

所以在閱讀了以下內容后,我們和@tehhowch的見解 -

https://developers.google.com/apps-script/guides/triggers/

腳本執行和API請求不會導致觸發器運行。 例如,調用Range.setValue()來編輯單元格不會導致電子表格的onEdit觸發器運行。

通過簡單地在原始移動功能中運行時間戳來解決,就像這樣 -

function move() {

  var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
  var source_range = source.getRange(3, 15, 1, 6).getValues();

  var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
  var target_range = target.getRange(target.getLastRow() + 1, 2, 1, 6);

  target_range.setValues(source_range);

  var datecell = target_range.offset(0, -1, 1, 1);

  datecell.setValue(new Date()).setNumberFormat('YY-MM-DD HH:mm:ss');

  var clearsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
  clearsheet.getRange("J3:K4").clearContent();
  clearsheet.getRange("B8:B25").clearContent();
  clearsheet.getRange("H8:H9").clearContent();
  clearsheet.getRange("H11").clearContent();
  clearsheet.getRange("O7:P16").clearContent();

}

有時候你必須大聲思考。 希望這有助於其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM