用于更新多个Google表格过滤器视图范围的脚本

科比

我正在尝试使用以下脚本来更新表格中50多个个人过滤器视图上的范围。我使用了下面的代码,(很有帮助!)。

我唯一的问题是,如果我有每个唯一的filterViewId,则此方法效果很好。这里是否有一种方法可以修改此脚本,以将更新后的范围应用于标题为“ MY SHEET”的工作表中的所有过滤器视图?

function UpdateFilterView() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var dataSheet = ss.getSheetByName('MY SHEET');  
  var lastRow = dataSheet.getLastRow();
  var lastColumn = dataSheet.getLastColumn();
  var sheetId = dataSheet.getSheetId();
  var filterSettings = {
    "filterViewId": "1099738202",
    "range":{
      "sheetId": sheetId,
      "startRowIndex": 0,
      "endRowIndex": lastRow,
      "startColumnIndex": 0,
      "endColumnIndex": lastColumn
    }
  };
  var requests = [{
    "updateFilterView":{
      "filter": filterSettings,
      "fields": "*",  
    }
  }];
  Sheets.Spreadsheets.batchUpdate({"requests":requests}, ss.getId());  
} 

Tanaike

我相信您的目标如下。

  • 您想要使用Google Apps脚本更新Google Spreadsheet中工作表(“ MY SHEET”)的所有过滤器视图。
  • 所有过滤器视图的设置都相同。

修改要点:

  • 在您的脚本中,工作表“ MY SHEET”的一个过滤器视图已更新。因此,在这种情况下,需要检索filterViewId所有过滤器视图。
  • 为了检索filterViewId所有过滤器视图,我使用了Sheets API中的“ spreadsheets.get”方法。

当以上几点反映到您的脚本时,它将变为以下内容。

修改后的脚本:

使用此脚本之前,请在Advanced Google services上启用Sheets API,并启用V8运行时。

function UpdateFilterView() {
  var sheetName = "MY SHEET";  // Please set the sheet name.
  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataSheet = ss.getSheetByName(sheetName);
  var lastRow = dataSheet.getLastRow();
  var lastColumn = dataSheet.getLastColumn();
  var sheetId = dataSheet.getSheetId();
  var spreadsheetId = ss.getId();
  var filterViews = Sheets.Spreadsheets.get(spreadsheetId, {ranges: [sheetName], fields: "sheets(filterViews)"}).sheets[0].filterViews;
  var requests = filterViews.map(e => ({
    updateFilterView: {
      filter: {
        filterViewId: e.filterViewId,
        range: {sheetId: sheetId, startRowIndex: 0, endRowIndex: lastRow, startColumnIndex: 0, endColumnIndex: lastColumn}
      },
      fields: "*",
    }
  }));
  Sheets.Spreadsheets.batchUpdate({requests: requests}, spreadsheetId);
}
  • 在此修改后的脚本中,首先,filterViewId使用“ spreadsheets.get”方法检索所有过滤器视图并创建请求主体,然后,将请求主体与“ spreadsheets.batchUpdate”方法一起使用。

参考文献:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用于数组字段的elasticsearch范围过滤器

表格过滤器不适用于退格键

在Google表格的过滤器视图中排序时,ArrayFormula列消失

使用Google Apps脚本删除Google表格中的所有过滤器

搜索和过滤器-Google表格

Google表格过滤器

如何从Google表格中的过滤器中选择多个值?

使用Google App脚本删除一定数量的过滤器视图

如何使用Google Apps脚本应用电子表格过滤器?

如何修复表格中的数据范围过滤器?

打开Google表格后,如何自动加载过滤器视图?

将范围过滤器用于Django Rest框架

有没有一种方法可以使用gspread更新Google表格过滤器视图范围?

使用新范围更新Google表格“过滤器视图”

闪亮的多个动态过滤器更新

Google Apps脚本-为Google表格创建和保存过滤器

将多个过滤器应用于Google Charts仪表盘

Google表格上的多个查询过滤器

C ++ 20范围:重用过滤器视图

Google表格-如何将过滤器功能与过滤器视图结合

Google表格过滤器视图-在数字之前对字符串进行排序

弹性地在Google表格中使用多个过滤器功能

在过滤器滑块上选择多个范围-Tableau

Appmaker:来自表格搜索栏的多个过滤器?

用于更新过滤器的制表符范围滑块

Google DOC - 多个过滤器组合

用于在 Google 表格中合并多个工作表的带过滤器的数组公式 - 空工作表问题

有没有办法使用 Apps 脚本检查 Google 表格中的过滤器视图是否隐藏了一行?

从 Google 表格中的多个过滤器公式中排除空单元格