更新多個 Google 表格過濾器視圖范圍的腳本此處有類似但不同的問題。
我在同一個作業簿中有幾張作業表,我想為范圍設定一個觸發器,以便在每個作業表的所有過濾視圖中更新。
為作業簿中的每張作業表制作檔案是我的最佳解決方案嗎?
uj5u.com熱心網友回復:
在您的情況下,以下修改后的腳本怎么樣?在此修改中,我在此執行緒中修改了示例腳本。
修改后的腳本:
在使用此腳本之前,請在 Advanced Google services 中啟用 Sheets API。并且,請設定您要更新的作業表名稱。
function UpdateFilterView() {
var sheetNames = ["Sheet1", "Sheet3",,,]; // Please set the sheet names you want to update.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheetId = ss.getId();
var sheets = Sheets.Spreadsheets.get(spreadsheetId, { ranges: sheetNames, fields: "sheets(filterViews)" }).sheets;
var requests = sheets.flatMap((s, i) => {
var dataSheet = ss.getSheetByName(sheetNames[i]);
var endRowIndex = dataSheet.getLastRow();
var endColumnIndex = dataSheet.getLastColumn();
var sheetId = dataSheet.getSheetId();
return s.filterViews.map(({ filterViewId }) => ({ updateFilterView: { filter: { filterViewId, range: { sheetId, startRowIndex: 0, endRowIndex, startColumnIndex: 0, endColumnIndex } }, fields: "*" } }));
});
if (requests.length == 0) return;
Sheets.Spreadsheets.batchUpdate({ requests: requests }, spreadsheetId);
}
- 運行此腳本時,Google 電子表格中特定作業表中的所有過濾器視圖都會更新。在這種情況下,使用一個 API。
筆記:
例如,當您想在 Google 電子表格的所有作業表中反映此腳本時,您還可以使用以下示例腳本。
function sample() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var spreadsheetId = ss.getId(); var sheets = Sheets.Spreadsheets.get(spreadsheetId, { fields: "sheets(filterViews)" }).sheets; var allSheets = ss.getSheets(); var requests = sheets.flatMap((s, i) => { var dataSheet = allSheets[i]; var endRowIndex = dataSheet.getLastRow(); var endColumnIndex = dataSheet.getLastColumn(); var sheetId = dataSheet.getSheetId(); return s.filterViews ? s.filterViews.map(({ filterViewId }) => ({ updateFilterView: { filter: { filterViewId, range: { sheetId, startRowIndex: 0, endRowIndex, startColumnIndex: 0, endColumnIndex } }, fields: "*" } })) : []; }); if (requests.length == 0) return; Sheets.Spreadsheets.batchUpdate({ requests: requests }, spreadsheetId); }
參考:
- 方法:電子表格.get
- 方法:電子表格.batchUpdate
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/473299.html
