[英]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.