【问题标题】:Is there a way to grab the FILTER VIEW unique URL using Google Scripts?有没有办法使用 Google Scripts 获取 FILTER VIEW 唯一 URL?
【发布时间】:2021-08-30 20:57:06
【问题描述】:

我想发送一封包含我的过滤视图唯一 URL 的电子邮件,但我不想对 URL 进行硬编码。应用程序脚本中有没有一种方法可以使用代码获取过滤器视图 URL?!并将其放入不同的 Google 表格中。即使它不是我当前的活动工作表。

var SS = SpreadsheetApp.getActiveSpreadsheet();
  var ss = SS.getId;

  var url = '';
  url += SS.getUrl();
  url += 'gid='
  url += 'fvid=';
  url += ss.getId;

这只会给我电子表格的 URL,而不是以 'fvid=' 开头的过滤器视图 URL

【问题讨论】:

  • var SS = SpreadsheetApp.getActiveSpreadsheet(); var ss = SS.getId;变种网址 = '';网址 += SS.getUrl();网址 += 'gid=' 网址 += 'fvid=';网址 += ss.getId;这只会给我到 spreadSheet 的 url,而不是以 'fvid=' 开头的过滤器视图 url

标签: google-apps-script google-sheets google-sheets-api spreadsheet


【解决方案1】:
function getFilterViews(){
  // use current sheet name here, or hardcode the sheet name string instead
  const sheetName = SpreadsheetApp.getActiveSheet().getSheetName()

  const response = Sheets.Spreadsheets.get(SpreadsheetApp.getActive().getId(), {
    includeGridData: false,
    "ranges": sheetName,
    "fields":"sheets.filterViews"
  })
  const filterViewUrls = response.sheets[0].filterViews.map(fv=>fvToUrl(fv))
  console.log(filterViewUrls)
}

function fvToUrl(fv){
  const ssId = SpreadsheetApp.getActive().getId()
  const url = `https://docs.google.com/spreadsheets/d/${ssId}/edit#gid=${fv.range.getSheetId()}&fvid=${fv.filterViewId}`
  return url
}

如果你想要一个特定的过滤视图(以'cat'为例),你可以使用

const TITLE = 'cat'
const filterViewUrls = response.sheets[0].filterViews.filter(fv=>fv.title===TITLE).map(fv=>fvToUrl(fv))

【讨论】:

  • 如何获取特定过滤器视图名称的 url?说电子表格有 10 个过滤器,我只想要名为“cat”的过滤器视图的 url,而不是其他过滤器 url
  • 可以告诉我如何使用该代码在工作表中获取特定的过滤器视图名称,例如“cat”
  • 有多个选项,我用其中一个更新了答案@Junior
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 2020-07-17
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
相关资源
最近更新 更多