谷歌电子表格编辑器:更新稀疏单元格

时间:2017-08-09 10:46:51

标签: google-apps-script google-sheets

我需要在大约10000行和200列的电子表格中更新大约300个稀疏单元格,如A1,B200,A1000,B5000,A6000,A6001 ....

现在我正在逐个更新单元格,但我一直在寻找批处理方法只进行1次调用并传递一个数组来仅更新这些单元格。我搜索了其他SO线程和谷歌电子表格文档,但对于批量更新,它们主要用于范围内的连续单元格。我找不到任何通过一次调用更新稀疏单元格的东西。

Google建议进行批量更新,而不是单独调用。那么是否有任何方法可以进行调用并仅传递需要更新的单元格?

1 个答案:

答案 0 :(得分:5)

您可以Advanced Sheets Service使用Google Sheets API v4& Sheets.Spreadsheets.Values.batchUpdate(resource, spreadsheetId)

请确保 Enable您的脚本中的服务

function updateMultipleRanges () {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var range_one = sheet.getRange("A1:D3").getA1Notation();
  var range_two = sheet.getRange("G1:G4").getA1Notation();

  // Create the JSON Request Body
  var update_req = {
    "valueInputOption": "RAW",
    "data": [{
        "range": range_one,
        "majorDimension": "ROWS",
        "values": [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]],
      },
      {
        "range": range_two,
        "majorDimension": "ROWS",
        "values": [[1], [2], [3], [4]],
      }],
    "includeValuesInResponse": false
  }

  Sheets.Spreadsheets.Values.batchUpdate(JSON.stringify(update_req), ss.getId())
}

为要更新的每个范围创建一个ValueRange对象,并将其添加到data[]