這是




uj5u.com熱心網友回復:
我相信你的目標如下。
- Google 電子表格中有 1 個源作業表和 3 個目標作業表。
- 在“Sheet1”中,這些值放在顯示影像的“C”、“E”和“G”列中。
- 您想要從源作業表中檢索值并使用從源作業表中檢索到的值創建目標作業表的過濾器視圖。
- 源作業表的每一列對應于每個目標作業表。
在這種情況下,下面的示例腳本怎么樣?
示例腳本:
在使用此腳本之前,請在 Advanced Google services 中啟用 Sheets API。
function create_filter_view2() {
// Please set the object for putting the filter views to the destination sheet using the values from the source sheet.
var obj = { src: "Sheet1", dst: [{ name: "Sheet2", range: "C4:C" }, { name: "Sheet3", range: "E4:E" }, { name: "Sheet4", range: "G4:G" }] };
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssId = ss.getId();
var src = ss.getSheetByName(obj.src);
var values = Sheets.Spreadsheets.Values.batchGet(ssId, { ranges: obj.dst.map(({ range }) => `'${obj.src}'!${range}`) });
obj.dst.forEach(({ name, range }, i) => {
var dst = ss.getSheetByName(name);
var dstId = dst.getSheetId();
var requests = values.valueRanges[i].values.flatMap(([r]) => {
if (r && r.toString() != "") {
return { addFilterView: { filter: { title: r, range: { sheetId: dstId, startRowIndex: 0, startColumnIndex: 0 }, filterSpecs: [{ columnIndex: 1, filterCriteria: { condition: { type: "TEXT_EQ", values: [{ userEnteredValue: r }] } } }] } } };
}
return [];
});
var response = Sheets.Spreadsheets.batchUpdate({ requests }, ssId);
var filter_view_ids = response.replies.map(({ addFilterView: { filter: { filterViewId } } }) => filterViewId);
var c = 0;
var richTextValues = values.valueRanges[i].values.map(e => {
if (e.toString() != "") {
var temp = [SpreadsheetApp.newRichTextValue().setText(e[0]).setLinkUrl(`#gid=${dstId}&fvid=${filter_view_ids[c]}`).build()];
c ;
return temp;
}
return [SpreadsheetApp.newRichTextValue().setText("").build()];
});
src.getRange(range).offset(0, 0, richTextValues.length).setRichTextValues(richTextValues);
});
}
- 在此示例腳本中,為了從分散范圍中檢索值,使用了 Sheets API。
筆記:
- 此示例腳本適用于顯示影像的作業表。因此,當您的實際情況與他們不同時,腳本可能無法使用。所以請注意這一點。
參考:
- 方法:電子表格.values.batchGet
- 方法:電子表格.batchUpdate
- AddFilterViewRequest
- 過濾視圖
- setRichTextValues(值)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406748.html
標籤:
上一篇:谷歌表陣列公式運行計數
