Google 工作表 API v4 values.get 和 values.batchGet returning 未定义或空单元格缺少 return 值

Google Sheets API v4 values.get and values.batchGet returning undefined or return value is missing for empty cells

Google Sheets API v4,如果单元格为空,Values.get returning 'undefined'。如果单元格为空,则 Values.get returns {majorDimension=ROWS, range=Sheet1!J7:L7} 没有 'values' 部分。

如果单元格为空,有没有办法得到以下输出?

Values.get 到 return [[]] 而不是 undefined

Values.batchGet 到 return {majorDimension=ROWS, values=[[]], range=Sheet1!J7:L7} 而不是 {majorDimension=ROWS, range=Sheet1!J7:L7}

代码如下:

function getOneCellValue() {
  var response = Sheets.Spreadsheets.Values.get("SpreadsheetId", "Sheet1!L20");
  Logger.log(response.values);
}

function getValueRanges() {
  var response = Sheets.Spreadsheets.Values.batchGet("SpreadsheetId", {ranges: ["Sheet1!D7:F7", "Sheet1!J7:L7"]});
  Logger.log(response.valueRanges);
}

谢谢。

工作表 API Values.get() & Values.batchGet() ValueRange: values[] 丢弃额外的 rows/columns 如果它们是空的:

The data that was read or to be written. This is an array of arrays, the outer array representing all the data and each inner array representing a major dimension. Each item in the inner array corresponds with one cell.

For output, empty trailing rows and columns will not be included.

如果您希望值返回为空单元格,请使用 built-in method range.getValues()。或将 undefined 替换为 [[]] 值。

function getOneCellValue() {
  var response = Sheets.Spreadsheets.Values.get("SpreadsheetId", "Sheet1!L20");
  
  // Assign the empty array if undefined
  var api_value = response.values || [[]];

  Logger.log(api_value);


  // Or use getValues()
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var get_values = ss.getRange("Sheet1!L20").getValues();

  Logger.log(get_values);
}

设置 majorDimension='COLUMNS' 而不是 majorDimension='ROWS'。在没有值的地方设置 majorDimension='COLUMNS' returns 占位符。可以获取有关函数参数的更多信息 here

result = sheet.values().get(
                            spreadsheetId=spreadsheet_id,
                            range=data_range,
                            majorDimension='COLUMNS'
                          ).execute()