是否有一种方法来抓取过滤器视图唯一的URL使用谷歌脚本?



我想发送一个电子邮件与我的过滤器视图唯一的URL,但我不想硬编码的URL。有没有一种方法在应用程序脚本,我可以得到过滤器视图URL使用代码?!并把它放到不同的谷歌表格中。即使它不是我当前的活动表单

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

这只给了我电子表格的URL,而不是以'fvid='

开头的过滤器视图URL。
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))

最新更新