我已经编写了这个函数,但收到错误“执行失败:这些列超出范围。” (在我的翻译中)。生成错误的行是 var CellName =sheet.getRange(1, i+1);
。我得到了这个结果:
这些是日志:
这是文字记录:
代码如下。我的疑问是为什么 for 循环在 header7 处停止而不是在所有 header 处停止?
var font_size = 12;
var headers = "HEADER1 HEADER2 HEADER3 HEADER4 HEADER5 HEADER6 HEADER7 HEADER8 HEADER9";
var arrayHeaders = headers.split(/[\s\t]+/);
Logger.log("arrayHeaders = " + arrayHeaders);
for (var i = 0; i < arrayHeaders.length; i++){
Logger.log("arrayHeaders.length = " + arrayHeaders.length);
var CellName = sheet.getRange(1, i+1);
CellName.setValue(arrayHeaders[i]).setBackgroundRGB(34, 139, 34).setFontSize(font_size).setFontWeight("bold").setFontFamily("Arial");
// There is no column 0, so i+1 to start
sheet.setColumnWidth(i+1, 100);
}
最佳答案
在以下函数中使用您的代码,脚本完成时没有错误,并且电子表格中的每个单元格中都包含预期的列标题:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var font_size = 12;
var headers = "HEADER1 HEADER2 HEADER3 HEADER4 HEADER5 HEADER6 HEADER7 HEADER8 HEADER9";
var arrayHeaders = headers.split(/[\s\t]+/);
Logger.log("arrayHeaders = " + arrayHeaders);
for (var i = 0; i < arrayHeaders.length; i++){
Logger.log("arrayHeaders.length = " + arrayHeaders.length);
var CellName = sheet.getRange(1, i+1);
CellName.setValue(arrayHeaders[i]).setBackgroundRGB(34, 139, 34).setFontSize(font_size).setFontWeight("bold").setFontFamily("Arial");
// There is no column 0, so i+1 to start
sheet.setColumnWidth(i+1, 100);
}
}
我最初认为,因为在屏幕截图中只有 7 列 getRange 失败,因为它尝试获取的列索引尚不存在。在测试过程中,我发现 getRange 在需要时创建新列。
我只能认为您的工作表中可能有 protected 范围或卡住的列?在新的电子表格中尝试上面的函数,看看会发生什么。
关于javascript - 如何修复此 "Execution failed: These columns are out of bounds."错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21211672/