应用程序脚本转储可变行数

App Script dumping variable number of rows

我正在使用 chrome 扩展程序通过 Apps 脚本更新工作表。

有 14 行要更新,我正在逐行发送数据。但问题是,如果我 运行 程序一次,它会更新,比方说,5 行。如果我再次 运行 程序,它将更新一些其他行数。另一个有趣的事情是,每次我 运行 程序,它都会发送不同的行。行永远不会相同。

Code.gs

function doGet(e){
  var sheetID=e.parameter.sheetID; 

  var firstName = e.parameter.firstName;
  var lastName = e.parameter.lastName;

  var count = e.parameter.count

  var ss = SpreadsheetApp.openById(spreadsheetId);
  SpreadsheetApp.setActiveSpreadsheet(ss);

    ss.appendRow([
                firstName,
                lastName,
                count
              ]);
}

这里 count 是我发送的变量,用于检查哪些行被保存到工作表中。对于每次执行,此值都不同。有时它是 [0, 12, 1, 3, 5](当 14 行中只有 5 行被保存时)而其他时候它是 [1, 5, 14, 13](当 14 行中只有 4 行被保存时)

这当然是在不对代码做任何改动的情况下。

以下是从 backgroun.js

发送的 GET 请求

background.js

params = 'firstName=' + firstName + '&' + 'lastName=' + lastName + '&' + 'count=' + count
url = url + encodeURI(params)
console.log(url)
fetch(url, {
    method: 'GET',
    mode: 'no-cors',
    })
    .then((response) => response)
    .then((data) => {
    console.log(data);
    })
    .catch((error) => {
    console.error('Error:', error);
});

我可能做错了什么?我错过了什么吗?

我最终不得不通过修改我的客户端代码来使用 getActiveSheet(),它首先将数据一个一个地发送到应用程序脚本,再发送到数组对象 -

{ 1: [a,b,c], 
  2: [x,y,z],
  3: [p,q,r],
  ...
}

我最终的 Apps 脚本代码如下:

应用脚本 (Code.gs)

function doPost(e){
    try 
    {
      var arr = [];
      var data = JSON.parse(e.postData.contents);

      for (var val in data){
        arr.push(data[val])
      }

      var ss = SpreadsheetApp.openById(spreadsheetId);
      SpreadsheetApp.setActiveSpreadsheet(ss);

      var lastRow = SpreadsheetApp.getActiveSheet().getLastRow();
      SpreadsheetApp.getActiveSheet().getRange(lastRow + 1,1,arr.length, arr[0].length).setValues(arr);

    } 
    catch (error) 
    {
      return Logger.log(error.toString());
    }
}