从 Google 个工作表上的主菜单以外的所有工作表中删除 3 列
Remove 3 columns from all sheets except Main Menu on Google Sheets
我没有编程背景,但我正在尝试在 Google 工作表上编写一个脚本,以删除工作簿中除 "Main Menu" 之外的前 3 列。我有 61 个标签,所以我不想单独删除它们。因此,以下是我通过谷歌搜索设法得出的结果。我一直看到错误 "Cannot find method deleteColumns()." 任何帮助将不胜感激。
function QuickDelete() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sss = ss.getSheets();
for (i = 0; i < sheets.length; i++) {
switch(sss[i].getSheetName()) {
case "Main Menu":
break;
default:
ss.deleteColumns(sss[i]);
}
}
}
我发现有两个问题需要解决。
- 您正在循环
sheets
。但是你应该循环 sss
.
-
deleteColumns()
method 需要应用于 sheet 即 sss[i]
类似于 sss[i].deleteColumns(columnPosition, howMany)
。
function QuickDelete() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sss = ss.getSheets();
var columnPosition = 1; // Delete from the 1st column
var howMany = 3; // Delete 3 columns
for (i = 0; i < sss.length; i++) {
switch(sss[i].getSheetName()) {
case "Main Menu":
break;
default:
sss[i].deleteColumns(columnPosition, howMany)
}
}
}
祝一切顺利。
在您的 for
循环中,您正在使用之前未定义的 sheets
。您必须将代码中的 sss
更改为 sheets
或反之亦然。
你要给deleteColumns提供两个参数,first column
要删除的位置和number of columns
要删除的位置。在您的情况下,分别为 1
和 3
。
所以你的代码可能是这样的:
function QuickDelete() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for (i = 0; i < sheets.length; i++) {
if (sheets[i].getSheetName() !== "Main Menu") {
sheets[i].deleteColumns(1, 3)
}
}
}
此外,如果有许多 values
您必须检查您的 expression
,则 switch
语句是有意义的。在你的情况下,我最好使用 if
来检查 sheet 的名称是否为 Main Menu
.
- 参考:
https://developers.google.com/apps-script/reference/spreadsheet/sheet#deleteColumns(Integer,Integer)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else
我没有编程背景,但我正在尝试在 Google 工作表上编写一个脚本,以删除工作簿中除 "Main Menu" 之外的前 3 列。我有 61 个标签,所以我不想单独删除它们。因此,以下是我通过谷歌搜索设法得出的结果。我一直看到错误 "Cannot find method deleteColumns()." 任何帮助将不胜感激。
function QuickDelete() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sss = ss.getSheets();
for (i = 0; i < sheets.length; i++) {
switch(sss[i].getSheetName()) {
case "Main Menu":
break;
default:
ss.deleteColumns(sss[i]);
}
}
}
我发现有两个问题需要解决。
- 您正在循环
sheets
。但是你应该循环sss
. -
deleteColumns()
method 需要应用于 sheet 即sss[i]
类似于 sss[i].deleteColumns(columnPosition, howMany)
。
function QuickDelete() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sss = ss.getSheets();
var columnPosition = 1; // Delete from the 1st column
var howMany = 3; // Delete 3 columns
for (i = 0; i < sss.length; i++) {
switch(sss[i].getSheetName()) {
case "Main Menu":
break;
default:
sss[i].deleteColumns(columnPosition, howMany)
}
}
}
祝一切顺利。
在您的
for
循环中,您正在使用之前未定义的sheets
。您必须将代码中的sss
更改为sheets
或反之亦然。你要给deleteColumns提供两个参数,
first column
要删除的位置和number of columns
要删除的位置。在您的情况下,分别为1
和3
。
所以你的代码可能是这样的:
function QuickDelete() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for (i = 0; i < sheets.length; i++) {
if (sheets[i].getSheetName() !== "Main Menu") {
sheets[i].deleteColumns(1, 3)
}
}
}
此外,如果有许多 values
您必须检查您的 expression
,则 switch
语句是有意义的。在你的情况下,我最好使用 if
来检查 sheet 的名称是否为 Main Menu
.
- 参考:
https://developers.google.com/apps-script/reference/spreadsheet/sheet#deleteColumns(Integer,Integer) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else