2017-08-05 75 views
0

任何人都可以幫助我,這是關於谷歌牀單自動排序腳本?實際上我並不熟悉腳本,但我想要做的是自動排序在我的表格範圍上的列A上輸入的日期。我發現了一個通用腳本,我在我的谷歌表單上試過,它實際上可以在同一張紙上進行手動編輯。 但是,我的表格範圍內的值是來自另一張工作表的我的(索引,匹配)公式的結果,因此無論何時從另一工作表輸入新值,它都不會自動進行排序。自動排序腳本在谷歌表onChange觸發器

這裏,我嘗試了我的谷歌片的示例腳本:

function onEdit(event){ 
    var sheet = event.source.getActiveSheet(); 

    var editedCell = sheet.getActiveCell(); 

    var columnToSortBy = 1; 
    var tableRange = "A2:J61"; // What to sort. 
    if(editedCell.getColumn() == columnToSortBy){ 
    var range = sheet.getRange(tableRange); 
    range.sort({ column : columnToSortBy, ascending: true}); 
    } 
} 

任何人都可以指導我修改此腳本,請...

這裏的鏈接來樣谷歌片,我」米試圖工作:

https://docs.google.com/a/alarmpromotions.org/spreadsheets/d/1IHPwNpAklt_5R6OyxTHMxMbXKkT4WsPBk20saUPbxgw/edit?usp=sharing

+0

它拋出什麼錯誤? –

+0

自動排序只有在我手動編輯同一紙張(紙張1)上的列時才起作用,但是紙張1上的值是基於紙張2的公式的結果。 – marby

回答

0

嘗試此onEdit與輔助函數來更新第一片材時,這是觸發編輯第二張。

function onEdit(){ 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var editedCell = sheet.getActiveCell(); 

    var columnToSortBy = 1; 
    var tableRange = "A2:J61"; // What to sort. 

    if(editedCell.getColumn() == columnToSortBy){ 
    var range = sheet.getRange(tableRange); 
    range.sort({ column : columnToSortBy, ascending: true}); 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    if(ss.getSheets()[1] == sheet){ 
     sortFirstSheet(); 
    } 
    } 
} 


function sortFirstSheet(){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    SpreadsheetApp.setActiveSheet(ss.getSheets()[0]); 

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var range = sheet.getRange("A2:J61"); 
    range.sort({ column : columnToSortBy, ascending: true}); 
} 

看看這些APIs

+0

嗨Rajeev - 哦,非常感謝您的幫助我現在複製它,它確實有效,但是,似乎我必須點擊運行才能使其工作。它是否應該是onEdit觸發器? – marby

+0

是的,它應該是onEdit觸發器的第二張,它會自動調用這兩個函數。希望你能理解代碼! –

+0

嗨Rajeev,再次感謝是的,我仍然在學習腳本。 – marby

相關問題