对于空单元格,缺少Google表格API v4 values.get和values.batchGet返回未定义或返回值

时间:2017-08-31 17:47:26

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

Google表格API v4,如果单元格为空,则Values.get返回“未定义”。如果单元格为空,则Values.get会返回{majorDimension=ROWS, range=Sheet1!J7:L7}而没有“值”部分。

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

Values.get返回[[]]而不是undefined

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

这是代码:

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);
}

谢谢。

1 个答案:

答案 0 :(得分:1)

表格API Values.get()& Values.batchGet() ValueRange: values[]会丢弃额外的行/列,如果它们为空:

  

已读取或待写的数据。这是一个数组数组,外部数组表示所有数据,每个内部数组表示一个主要维度。内部数组中的每个项目对应一个单元格。

     

对于输出,不会包含空的尾随行和列。

如果您希望值以空单元格的形式返回,请使用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);
}