javascript - 在 Google Apps 脚本中返回具有合并列的某些行的范围

标签 javascript google-apps-script google-sheets

我要使用 Google AppScript 为 Google 表格创建一个自定义函数。我有一组数据,我的自定义函数将汇总这些数据并将汇总显示在另一张工作表上。

我能够为摘要创建我的 on 算法并返回如下范围:

当前

enter image description here

现在我明白 Appscript 函数返回一个二维数组,但我的问题是如何使用 Appscript 合并一些单元格?什么时候有一个月?像这样:

目标

enter image description here

对于上面的例子, 我将从我的自定义函数返回的范围将是

[
    ['January', ''],
    ['Project 1', '10 Hours'],
    ['Project 2', '20 Hours'],
    ['Project 3', '30 Hours'],
    ['Project 4', '40 Hours'],
    ['Project 5', '50 Hours'],
    ['February', ''],
    ['Project 1', '10 Hours'],
    ['Project 2', '20 Hours'],
    ['Project 3', '30 Hours'],
    ['Project 4', '40 Hours'],
    ['Project 5', '50 Hours']
]

那么,我如何让 AppScript 告诉 GooglSheets ['January', ''],['February', ''], 是单元格合并?

如果 Excel 中有一个函数可以做到这一点,我也愿意接受其他方法。 :)

谢谢

最佳答案

此示例从 Sheet1 复制表格至 Sheet2到 3 行和 4 列。

function myFunction() {  
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var sheet1 = ss.getSheets()[0];
  var data = sheet1.getDataRange().getValues();   
  var mergeRows = [];  
  for(var i = 0; i < data.length; i++) {    
    if (data[i][1] == "") {
      mergeRows.push(i);      
    }
  }  
  var startRow = 3;  
  var startCol = 4;  
  var sheet2 = ss.getSheets()[1];  
  sheet2.getRange(startRow, startCol, data.length, data[0].length).setValues(data);  
  for(var i = 0; i < mergeRows.length; i++) {    
    sheet2.getRange(startRow + mergeRows[i], startCol, 1, 2).merge().setHorizontalAlignment('center');
  }  
}

关于javascript - 在 Google Apps 脚本中返回具有合并列的某些行的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34214614/

相关文章:

javascript - IE6 : Background-Image Load Event

javascript - 为什么 bool 值被记录为复选框在记录时未定义?

javascript - 在具有相同 ID 的数组中添加/求和多个值

javascript - 在 GAS 中使用全局变量是否可取?有什么缺点吗?

google-apps-script - 从电子表格脚本中调用 Web 应用程序脚本?

google-sheets - Google 电子表格范围名称

google-sheets - 带有嵌套 if 语句的 Google Sheets ARRAYFORMULA

javascript - 如何计算javascript中一个单词的音节数?

javascript - Angular4自定义单元格样式中的ag-grid

javascript - 当用户手动滚动时,Jquery .animate() 停止滚动?