【问题标题】:Find column given name of title row查找标题行的给定名称
【发布时间】:2017-03-06 19:51:44
【问题描述】:

给定一些表格:

我可以通过将 A1 notation"B:B" 中的列索引硬编码到我的 onEdit 函数中来获取 B 列的第一行值 datetime

function onEdit(event)
{
  var datetime_col = "B:B";
  Logger.log(event.range.getSheet().getRange(datetime_col).getValue());
  //=> [17-03-06 11:39:47:752 PST] datetime
}

但我想要给定字符串 "datetime" 的列 ID。

列表示为范围、字符串"B:B"、字符串"B" 或其他标识符对我来说并不重要。重要的是我想找到给定名称的列,而不是相反。

  • 这可能吗?
  • 您能在Class Sheet 文档中找到该函数吗?

【问题讨论】:

  • 参见Tutorial: Simple Mail Merge 示例,尤其是完整示例中的 getRowsData() 函数。这允许您使用标题行作为对象键。因此,您可以参考该列,而无需关心它是哪一个。

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


【解决方案1】:

获取第一行数据到最后一列,然后使用indexOf(col_Title)

function onEdit(event) {
  var columnNeeded,data,lastColumn,sh;

  sh = SpreadsheetApp.getActiveSheet();
  lastColumn = sh.getLastColumn();

  data = sh.getRange(1,1,1,lastColumn).getValues();//Get 2D array of all values in row one
  data = data[0];//Get the first and only inner array

  columnNeeded = data.indexOf('datetime') + 1;//Arrays are zero indexed- add 1

  Logger.log('columnNeeded: ' + columnNeeded);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多