如何从特定列中检索数据

How to retrieve data from specific column

在我的 AppScript 代码中,我有以下代码,returns 完美地 de 列 JSON 格式

fileID = "xxxxxxvxjRD_kjE7gzYE3WAcGdxaQEEQNReY"
sheetName = "Data"
function doGet(e) {
 // Logger.log(e.parameter.method);
   // Open Google Sheet using ID
  var ss = SpreadsheetApp.openById(fileID);
  var sheet = ss.getSheetByName(sheetName);
  // Read all data rows from Google Sheet
  const values = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues();
  // Converts data rows in json format
  const result = JSON.stringify(values.map(([a,b,c,d,e]) => ({SupplierName: d,Brand:e,})));
  // Returns Result
  return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.JSON);
}

values.map(([a,b,c,d,e]) 在上面的代码中起着重要的作用。

现在列数越来越多,我需要2列,即zad,而不是de,是否需要在 map 函数中使用的数组中包含所有列名,即:

values.map(([a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t.....,ad])

或者有更好的方法只使用 2 个索引。

你的情况,下面的方法怎么样?

示例脚本:

// Ref: 
const letterToColumn = letter => {
  let column = 0,
    length = letter.length;
  for (let i = 0; i < length; i++) {
    column += (letter.charCodeAt(i) - 64) * Math.pow(26, length - i - 1);
  }
  return column;
};

const columnLetters = ["Z", "AD"]; // Column letters you want to retrieve.
const res = values.map(r => columnLetters.map(e => r[letterToColumn(e) - 1]));
console.log(res)
  • 在此示例脚本中,为了从特定列中检索值,通过将列字母转换为列号来检索值。这样,您可以通过给出 const columnLetters = ["Z", "AD"].
  • 来检索值

或许你可以试试这样按列取值: 使用高级表格服务,majorDimension: "COLUMNS", 您可以使用 get 或 batchGet 方法。两者都有效。

  const result ={}
  const values = Sheets.Spreadsheets.Values.batchGet('xxxxxxvxjRD_kjE7gzYE3WAcGdxaQEEQNReY', {
      ranges: [
        //provide the range your need eg from a to z
        "Data!A:Z",
      ],
      majorDimension: "COLUMNS",
    }).valueRanges;

  for ( i in values[0].values){
    //result[header[i]] = values[0].values[i]
     const header = values[0].values[i][0];
     result[header] = values[0].values[i]
  }

  console.log(result)
  return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);