[英]onEdit() specific cell doesn't fire the script
當我更改源工作表中一個單元格的值時,我試圖將數據從一張工作表復制到另一張工作表。 我在編輯特定單元格時嘗試觸發的其他腳本也遇到了這個問題,不確定我做錯了什么。
我在這里找到了這段代碼( Google Apps Script - Copy data to different worksheet and append ),當我手動運行它時效果很好,但是當我包裝它時,編輯一個單元格時似乎什么也沒有發生,見下文。
if (e.range.getA1Notation() === 'C1'){
var sss = SpreadsheetApp.openById('1ws8yg5_1k4ZZN2amfZ-cNvY-hUMUDGhbwnNPCGJhlAY'); //replace with source ID
var ss = sss.getSheetByName('export');
var range = ss.getRange('B3:C8');
var data = range.getValues();
var tss = SpreadsheetApp.openById('152JxdVi6Ssqz2ZZ65yDW5p5m0PnP63vApNgfP3jS_Pc'); //replace with destination ID
var ts = tss.getSheetByName('import'); //replace with destination Sheet tab name
ts.getRange(1, 2, 6,2).setValues(data); //you will need to define the size of the copied data see getRange()
}
}
源表: https://docs.google.com/spreadsheets/d/1ws8yg5_1k4ZZN2amfZ-cNvY-hUMUDGhbwnNPCGJhlAY/edit#gid=0
目標表: https://docs.google.com/spreadsheets/d/152JxdVi6Ssqz2ZZ65yDW5p5m0PnP63vApNgfP3jS_Pc/edit#gid=0
我也嘗試創建一個新觸發器,如下所示:
function createOnEditTrigger() {
var ss = SpreadsheetApp.openById(targetSpreadsheetID);
ScriptApp.newTrigger("CopyRange")
.forSpreadsheet(ss)
.onEdit()
.create();
}
但什么都沒有發生。
這里有兩點需要注意:
您忘記將事件 object 作為CopyRange(e)
function 的參數傳遞。 如果沒有此參數,則無法使用事件 object,但您的代碼會使用它。
實際上,由於SpreadsheetApp.openById()
,您需要一個可安裝的觸發器。 您確實也可以使用您提到的腳本創建觸發器,這也是我推薦的方法。
Go 到export
電子表格,清除之前的代碼並添加此代碼。 本質上,我將事件 object 添加到CopyRange(e)
function 和觸發器創建 function 中。 然后只執行createOnEditTrigger
function:
function CopyRange(e) {
if (e.range.getA1Notation() === 'C1'){
var sss = SpreadsheetApp.openById('1ws8yg5_1k4ZZN2amfZ-cNvY-hUMUDGhbwnNPCGJhlAY'); //replace with source ID
var ss = sss.getSheetByName('export');
var range = ss.getRange('B3:C8');
var data = range.getValues();
var tss = SpreadsheetApp.openById('152JxdVi6Ssqz2ZZ65yDW5p5m0PnP63vApNgfP3jS_Pc'); //replace with destination ID
var ts = tss.getSheetByName('import'); //replace with destination Sheet tab name
ts.getRange(1, 2, 6,2).setValues(data); //you will need to define the size of the copied data see getRange()
}
}
function createOnEditTrigger() {
var ss = SpreadsheetApp.openById('1ws8yg5_1k4ZZN2amfZ-cNvY-hUMUDGhbwnNPCGJhlAY');
ScriptApp.newTrigger("CopyRange")
.forSpreadsheet(ss)
.onEdit()
.create();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.