簡體   English   中英

在 Google Scripts 中按名稱獲取 Google 表格列

[英]Get Google sheets column by name in Google Scripts

我有一個腳本,允許我從我的 Google 表格中獲取列的內容並將其顯示在我的 HTML 表單中,同時刪除任何重復的同名內容。

示例:紅色、紅色、黃色、黃色、藍色、綠色將在下拉菜單中顯示為紅色、黃色、藍色、綠色。

問題是,我想按名稱而不是數字(即 1)獲取列內容。

這是我的腳本:

function getColors() { 
  var sheet = SpreadsheetApp.openById("1czFXXQAIbW9IlAPwHQ0D5S_a-Ew82p-obBEalJFNJTI").getSheetByName("Vinyl Costs");
  var getLastRow = sheet.getLastRow();
  var return_array = [];
  for(var i = 2; i <= getLastRow; i++)
  {
      if(return_array.indexOf(sheet.getRange(i, 1).getValue()) === -1) {
        return_array.push(sheet.getRange(i, 1).getValue());
      }
  }


  return return_array;  
}

我發現了一個類似的問題,接受的答案是這樣的:

function getByName(colName, row) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var col = data[0].indexOf(colName);
  if (col != -1) {
    return data[row-1][col];
  }
}

但我似乎無法與我一起工作? 這是我的第一個 Google 腳本,所以我還沒有 100% 真正理解它。

我稍微改變了功能。
一方面, getByName現在不是獲取工作表的所有值,而是僅獲取第一行。

  function getColors() { 
    const sheet = SpreadsheetApp.openById("1czFXXQAIbW9IlAPwHQ0D5S_a-Ew82p-obBEalJFNJTI").getSheetByName("Vinyl Costs");

    const colName = 'your_column_name';
    const colNum = getColNumberByName(colName);
    if (colNum === null) {
      Logger.log('Column ' + colName + ' was not found!');
      return [];
    }

    const firstRow = 2;
    const lastRow = sheet.getLastRow();

    // get all values from column
    const columnData = sheet.getRange(firstRow, colNum, lastRow).getValues().flat();

    // filter values on duplicates
    return columnData.filter((el, i) => i === columnData.indexOf(el) && el !== '');
  }

  function getColNumByName(colName, row = 1) {
    const sheet = SpreadsheetApp.openById("1czFXXQAIbW9IlAPwHQ0D5S_a-Ew82p-obBEalJFNJTI").getSheetByName("Vinyl Costs");
    
    const [data] = sheet.getRange(row, 1, row, sheet.getLastColumn()).getValues();
    const col = data.indexOf(colName);

    // adding 1 because column nums starting from 1
    return col === -1 ? null : col + 1;
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM