Google App脚本-自定义Importrange功能,需要自动更新

时间:2018-08-20 15:56:08

标签: javascript google-apps-script google-sheets

我要将数据从9个不同的Google表格移植到主概览面板,以跟踪公司指标。我没有使用ImportRange,而是使用Google Apps脚本创建了一个自定义函数,因为我需要所有格式设置。我要复制的工作表使用公式,因此我首先在源电子表格中创建工作表的副本而不使用公式,然后将该工作表复制到目标电子表格。

ImportRange的好处是它会不断获取数据并自动更新。我在下面编写的函数会创建和删除工作表,以将格式移植到masterSS上。是否有解决方法,任何人都可以想到仅获取值即可自动更新,而无需创建和删除一堆新工作表?

此外,每次创建和删除新工作表时,工作表计数都会增加1。是否可以重置此计数器?

function importPortComp(portComp, srcRange, destRange) {

  // Create temporary sheet in source spreadsheet
  var tempSheet = portComp.insertSheet();

  // Copy values, formatting, and column widths to temporary sheet
  srcRange.copyTo(tempSheet.getRange(1, 1), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  srcRange.copyTo(tempSheet.getRange(1, 1), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);
  srcRange.copyTo(tempSheet.getRange(1, 1), SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS, false);

  // Copy temporary sheet destination spreadsheet
  var copiedSheet = tempSheet.copyTo(masterSS);

  // Delete temporary sheet from source spreadsheet
  portComp.deleteSheet(tempSheet);

  // Copy source range to destination range
  copiedSheet.getRange(srcRange.getA1Notation()).copyTo(destRange);
  copiedSheet.getRange(srcRange.getA1Notation()).copyTo(destRange, SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS, false);

  // Delete copied sheet from T/R spreadsheet
  masterSS.deleteSheet(copiedSheet);
}

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题: 使用:

array = sheet.getSheetValues(startRow, startColumn, numRows, numColumns)

获取值 然后以正确的索引(我猜是array[row][column])将其推入数组。要“ concat / add”的其他数据设置了正确的范围和用途

sheet.range.setValues(array)

您可以检查this documentation