使用脚本和 GID 更改 Google Sheet 选项卡名称
Change Google Sheet tab name using Script and GID
使用 google App 脚本我尝试更改 google sheet 选项卡名称。但是,由于选项卡会定期更改名称,因此我们的想法是在脚本中使用 GID 来更改 ID。想象一下下面的 table:有一个 table 和假定的 sheet 名称的列,然后是应该具有该名称的选项卡的 gid。
Name Event
GID
abc jan 12
981289394
BCD jan 18
901985265
ZYX feb 18
1085929622
这可能吗?这会是什么样子?
我认为可以使用 Google Apps 脚本使用“GID”(sheet ID)更改 sheet 名称。在您的 table 中,当“Name Event”和“GID”分别是列“A”和“B”时,这个 table 与 Spreadsheet 相同,包括sheet如果你想重命名,下面的脚本怎么样?
这个脚本的流程如下
- 使用 sheet 中的 GID 检索 table 以重命名 sheet 名称。
- 创建用于搜索 GID 的对象。
- 使用从源 sheet 检索到的 GID 重命名 sheet 名称。
在此示例脚本中,在您的 table 中,检索第一列和第二列,并将第二列的值用作 GID 列表。并且,第一列的值用作要重命名的 sheet 名称。
示例脚本:
请将以下脚本复制并粘贴到 Spreadsheet 中,并在您的问题中设置包含 table 的 sheet 名称。当您使用此脚本时,请运行myFunction
。通过这种方式,从源 sheet 检索值,并使用 Name Event
和 GID
.
的检索值重命名 sheet
function myFunction() {
const sheetName = "Sheet1"; // Please set the sheet name of the sheet of your table in your question. This is a source sheet.
// 1. Retrieve the table for renaming the sheet name using GID from the sheet.
const ss = SpreadsheetApp.getActiveSpreadsheet();
const srcSheet = ss.getSheetByName(sheetName);
const data = srcSheet.getRange("A2:B" + srcSheet.getLastRow()).getValues();
// 2. Create an object for searching the GID.
const sheetObj = ss.getSheets().reduce((o, sheet) => Object.assign(o, {[sheet.getSheetId()]: sheet}), {});
// 3. Rename the sheet name using GIDs retrieved from the source sheet.
data.forEach(([name, gid]) => {
if (sheetObj[gid] && !ss.getSheetByName(name)) {
sheetObj[gid].setName(name);
}
});
}
注:
- 在此示例脚本中,假设“Name Event”和“GID”分别是列“A”和“B”,并且具有 GID 的 sheets 是与来源 sheet 相同的 Spreadsheet。请注意这一点。如果这与您的实际情况不同,请告诉我。
- 在 Google Spreadsheet 中,无法在 Google Spreadsheet 中创建相同的 sheet 名称。所以请注意这一点。
参考文献:
使用 google App 脚本我尝试更改 google sheet 选项卡名称。但是,由于选项卡会定期更改名称,因此我们的想法是在脚本中使用 GID 来更改 ID。想象一下下面的 table:有一个 table 和假定的 sheet 名称的列,然后是应该具有该名称的选项卡的 gid。
Name Event | GID |
---|---|
abc jan 12 | 981289394 |
BCD jan 18 | 901985265 |
ZYX feb 18 | 1085929622 |
这可能吗?这会是什么样子?
我认为可以使用 Google Apps 脚本使用“GID”(sheet ID)更改 sheet 名称。在您的 table 中,当“Name Event”和“GID”分别是列“A”和“B”时,这个 table 与 Spreadsheet 相同,包括sheet如果你想重命名,下面的脚本怎么样?
这个脚本的流程如下
- 使用 sheet 中的 GID 检索 table 以重命名 sheet 名称。
- 创建用于搜索 GID 的对象。
- 使用从源 sheet 检索到的 GID 重命名 sheet 名称。
在此示例脚本中,在您的 table 中,检索第一列和第二列,并将第二列的值用作 GID 列表。并且,第一列的值用作要重命名的 sheet 名称。
示例脚本:
请将以下脚本复制并粘贴到 Spreadsheet 中,并在您的问题中设置包含 table 的 sheet 名称。当您使用此脚本时,请运行myFunction
。通过这种方式,从源 sheet 检索值,并使用 Name Event
和 GID
.
function myFunction() {
const sheetName = "Sheet1"; // Please set the sheet name of the sheet of your table in your question. This is a source sheet.
// 1. Retrieve the table for renaming the sheet name using GID from the sheet.
const ss = SpreadsheetApp.getActiveSpreadsheet();
const srcSheet = ss.getSheetByName(sheetName);
const data = srcSheet.getRange("A2:B" + srcSheet.getLastRow()).getValues();
// 2. Create an object for searching the GID.
const sheetObj = ss.getSheets().reduce((o, sheet) => Object.assign(o, {[sheet.getSheetId()]: sheet}), {});
// 3. Rename the sheet name using GIDs retrieved from the source sheet.
data.forEach(([name, gid]) => {
if (sheetObj[gid] && !ss.getSheetByName(name)) {
sheetObj[gid].setName(name);
}
});
}
注:
- 在此示例脚本中,假设“Name Event”和“GID”分别是列“A”和“B”,并且具有 GID 的 sheets 是与来源 sheet 相同的 Spreadsheet。请注意这一点。如果这与您的实际情况不同,请告诉我。
- 在 Google Spreadsheet 中,无法在 Google Spreadsheet 中创建相同的 sheet 名称。所以请注意这一点。