我正在为家谱创建一个电子表格。每个人都有一排,连续的人都可以有结婚日期。我想合并F列(结婚日期列(中的单元格,以获得数千个潜在的配对。我的代码是:-
function mergeMarriageCells() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var data = ss.getDataRange().getValues();
for (var i = 1; i < data.length; i += 2) {
ss.getRange(i, 5, 2, 1).mergeVertically();
}
}
这在第6行中给了我一个错误,这个错误以ss.getRange开头
"异常:参数(String、number、number、number(不匹配SpreadsheetApp的方法签名。电子表格.getRange(第6行,文件";代码"(&";。
然而,i已初始化为1,因此应理解为整数,而不是字符串。
顺便说一下,第一行包含标题,因此循环从1开始。
问题:
电子表格对象没有getRange方法。后者是Sheet对象的一种方法。
解决方案:
- 修改代码以考虑工作表而不是电子表格
你有以下方法可以做到这一点:
var sh = ss.getSheetByName('Sheet1');
var sh = ss.getSheets()[0] // 0 means first sheet, 1 means second sheet
var sh = ss.getActiveSheet(); // the sheet that is currently selected in the file
根据您的目标,从这三个选项中选择一个。请参阅参考一节,了解它们各自的作用,以找到最适合您的选项。
- 最后,如果要合并列F中的单元格,则需要在
getRange
的第二个参数中选择6
而不是5
(第E列(
结果:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName('Sheet1');
// var sh = ss.getSheets()[0] // 0 means first sheet
// var sh = ss.getActiveSheet(); // the sheet that is currently selected
var data = sh.getDataRange().getValues();
for (var i = 1; i < data.length; i += 2) {
sh.getRange(i, 6, 2, 1).mergeVertically();
}
}
请根据您的具体情况修改Sheet1
。
参考文献:
- getSheetByName(name(
- getSheets((
- getActiveSheet((