2015-10-06 55 views
1

我曾經爲我的工作表創建了一個腳本,它基於https://webapps.stackexchange.com/questions/7211/how-can-i-make-some-data-on-a-google-spreadsheet-auto-sorting這裏的內容在編輯時會自動對特定工作表進行排序。但是,我不能固定日期,但似乎已停止工作。我已經做了一些研究,顯然排序方法前些時候已經改變了。Google Apps腳本自動(編輯時)排序(僅限特定工作表)

現在基本上我需要的是以下內容:我有一個谷歌電子表格,有很多不同的工作表(20+)我曾經只有一張表需要排序,但整個事情隨着時間的推移而增長,現在已經是兩張我需要分揀的工作表了,而且這個數字很可能會進一步增加 - 而且排序只適用於這些特定工​​作表是非常重要的。而且這個問題更加複雜,紙張的順序並沒有固定,所以我不能使用紙張ID,因爲它們可能會改變,所以它必須使用紙張名稱(它也可以改變,但它不是很可能 - 如果發生了,腳本會很快適應)。

需要排序的表格包含大約6-7列中的大量數據,具有標題行,應該按第一列排序,最小的數字排在最前面。

我想出了到現在爲止是這樣的:

function AutoSortOnEdit(){ 
    // select active sheet 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 

    // select correct sheet 
    var sheet = ss.getSheetByName("testsheet456"); 

    // select range (exclude top row) 
    var range = sheet.getRange("A2:ZZ999"); 

    // actually do the sorting 
    range.sort({column: 1, ascending: true}); 

Browser.msgBox("sort done"); 
} 

留言箱就在那裏,所以我看到的東西被執行,只要它正常工作,這將被刪除。我還通過電子表格編輯添加了自定義觸發器。

什麼是時髦的是,當我將range.sort改爲「(1,true)」而不是我現在擁有的時候,它會拋出一個錯誤「方法sort(number,boolean)not found」...

但實際上壞消息是:有了這個代碼在那裏a)我沒有錯誤b)消息框出現,所以它實際上經歷了整個事情,c)它也適用於我實際編輯該事情時這是好的),但D)沒有任何分類...

所以,任何人都可以幫我這個嗎?我沒有看到沒有真正的原因,爲什麼這不應該工作(但是,我再次,我不是一個程序員,所以這就是爲什麼我來這裏尋求幫助。:P)。此外,我還需要(如介紹中所述)將該腳本應用於兩個(或更多)特定工作表(按名稱),因爲它目前僅用於一個工作表,但我希望使其適用於一個第一,它甚至失敗,現在這個權利....

由於提前,

彼得

回答

1

你的範圍是無效的。如果工作表中沒有地址爲ZZ999的單元格,則A2:ZZ999不起作用。您可以通過使用sheet.getLastRow()sheet.getLastColumn()來使其工作。要對幾張紙進行排序,您需要一個包含所有紙張的數組,然後循環執行。例如使用forEach循環。

function AutoSortOnEdit() { 
    var sheetNames = ["testsheet456", "testsheet457", "testsheet458"]; 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    sheetNames.forEach(function(name) { 
    var sheet = ss.getSheetByName(name); 
    var range = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); 
    range.sort({column: 1, ascending: true}); 
    }); 
} 
+0

真棒的人,就像一個魅力。非常感謝你! –

-2

這也工作得很好:

function AutoSortOnEdit() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    sheet.getLastColumn()); 
    ss.sort(1, false); 
    }); 
} 
+0

請描述此解決方案的工作原理。 – warunapww

+0

var sheet = ss.getSheetByName(「FormResponce」); sheet.sort(1,false); – arif

+0

這也適用: var sheet = ss.getSheetByName(「FormResponce」); 表。sort(1,false); – arif

相關問題