Google Apps 脚本 - 电子表格中的通用标头

Google Apps Scripting - Generic Headers in Spreadsheet

本文关键字:Apps 脚本 电子表格 Google      更新时间:2023-09-26

快速查看我通常打扰人们的地方告诉我,这里是提问的新地方!

我一直在制作一个脚本来创建从电子表格数据生成的文档,而电子表格数据又是从Google表单生成的。(希望这是有道理的...

无论如何,我在很多搜索和一些帮助方面非常成功,但现在我想让我的脚本同构,这样当我想要设置新表单等时,我就不需要修补它。

我有来自 Google 脚本教程的 getRowData 函数,但我希望这些是通用的,即列 1、列 2 等,而不是从规范化标题调用行数据。

我已经粘贴了下面的教程函数,它将数据传递给另一个函数,该函数规范化标题以用作对象,我想这就是我可以使它们通用的地方,但我不确定如何开始它......

任何帮助将不胜感激!

谢谢

亚历克斯

// getRowsData iterates row by row in the input range and returns an array of objects.
// Each object contains all the data for a given row, indexed by its normalized column name.
// Arguments:
//   - sheet: the sheet object that contains the data to be processed
//   - range: the exact range of cells where the data is stored
//   - columnHeadersRowIndex: specifies the row number where the column names are stored.
//       This argument is optional and it defaults to the row immediately above range; 
// Returns an Array of objects.
function getRowsData(sheet, range, columnHeadersRowIndex) {
  columnHeadersRowIndex = columnHeadersRowIndex || range.getRowIndex() - 1;
  var numColumns = range.getEndColumn() - range.getColumn() + 1;
  var headersRange = sheet.getRange(columnHeadersRowIndex, range.getColumn(), 1, numColumns);
  var headers = headersRange.getValues()[0];
//  Browser.msgBox(headers.toSource());
  return getObjects(range.getValues(), normalizeHeaders(headers));
//  return getObjects(range.getRowIndex);
}

如果你想使用它们的索引来获取列,为什么要将它们解析为对象呢?只需使用普通getValues

var values = sheet.getDataRange().getValues();
var row2 = values[1];
var cell_in_col4 = row2[3];

看起来你在声明 columnHeadersRowIndex 变量时缺少"var"。