Javascript 如何使用GoogleApps脚本上的电子表格一次更新一行的所有列?

Javascript 如何使用GoogleApps脚本上的电子表格一次更新一行的所有列?,javascript,google-apps-script,Javascript,Google Apps Script,我读了一些其他类似的问题,但我不明白如何在我的代码中做到这一点 我有一个电子表格,它将填充一个应用程序,我正在使用appendRow添加行,但现在我需要用新的数据数组更新整行,如果电子表格上存在我正在接收的行的变量pid(Código),我需要更新它,而不是添加新行 功能数据集(请求){ var sheet=电子表格应用程序openById(“文档ID”); var data=sheet.getActiveSheet().getDataRange().getValues(); var更新指数;

我读了一些其他类似的问题,但我不明白如何在我的代码中做到这一点

我有一个电子表格,它将填充一个应用程序,我正在使用appendRow添加行,但现在我需要用新的数据数组更新整行,如果电子表格上存在我正在接收的行的变量pid(Código),我需要更新它,而不是添加新行

功能数据集(请求){
var sheet=电子表格应用程序openById(“文档ID”);
var data=sheet.getActiveSheet().getDataRange().getValues();
var更新指数;
试一试{
var pid=request.parameter.pid;
var nome=request.parameter.nome;
var desc=request.parameter.desc;
var marca=request.parameter.marca;
var tipo=request.parameter.tipo;
var preco=request.parameter.preco;
var-ativado=request.parameter.ativado;
var rowData=[pid、nome、desc、marca、tipo、preco、ativado];
//循环所有行,检查列“pid”是否具有变量“pid”的值
对于(变量i=1;i
  • 当列“A”的值中包含
    pid
    时,您希望将该行替换为
    rowData
  • 当列“A”的值中不包括
    pid
    时,您希望用
    rowData
    追加新行
如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一

修改脚本: 当您的脚本被修改时,它将变成如下所示

function doGet(request) {
  var sheet = SpreadsheetApp.openById("DOCUMENT_ID");
  var range = sheet.getActiveSheet().getDataRange();  // Added
  var data = range.getValues();  // Modified
  var updateIndex = 0;  // Modified
  try{
    var pid = request.parameter.pid;
    var nome = request.parameter.nome;
    var desc = request.parameter.desc;
    var marca = request.parameter.marca;
    var tipo = request.parameter.tipo;
    var preco = request.parameter.preco;
    var ativado = request.parameter.ativado;
    var rowData = [pid, nome, desc, marca, tipo, preco, ativado];
    for(var i = 1; i < data.length; i++){
      if(data[i][0] == pid){
        data[i] = rowData;  // Added
        updateIndex = i;
      }
    }
    if (updateIndex != 0) {  // Added
      range.setValues(data);
    } else {
      sheet.appendRow(rowData);
    }
  } catch(e){
    console.log(e);
  }
  // In your script, "result" is not declared. Please be careful this.
  return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType);
}
功能数据集(请求){
var sheet=电子表格应用程序openById(“文档ID”);
var range=sheet.getActiveSheet().getDataRange();//已添加
var data=range.getValues();//已修改
var updateIndex=0;//已修改
试一试{
var pid=request.parameter.pid;
var nome=request.parameter.nome;
var desc=request.parameter.desc;
var marca=request.parameter.marca;
var tipo=request.parameter.tipo;
var preco=request.parameter.preco;
var-ativado=request.parameter.ativado;
var rowData=[pid、nome、desc、marca、tipo、preco、ativado];
对于(变量i=1;i
注:
  • 在脚本中,未声明
    result
    。请小心这个
  • 修改Web应用脚本时,请将Web应用重新部署为新版本。这样,最新的脚本就会反映到Web应用程序中。因此,请注意这一点。
如果我误解了你的问题,而这不是你想要的方向,我道歉。

    function doGet(request) {
          var sheet=SpreadsheetApp.openById("DOCUMENT_ID");
          var data=sheet.getActiveSheet().getDataRange().getValues();
          var updateIndex;
          try{
            var pid=request.parameter.pid;
            var nome=request.parameter.nome;
            var desc=request.parameter.desc;
            var marca=request.parameter.marca;
            var tipo=request.parameter.tipo;
            var preco=request.parameter.preco;
            var ativado=request.parameter.ativado;
            var rowData=[pid, nome, desc, marca, tipo, preco, ativado];
              for(var i=1; i < data.length; i++){
                if(data[i][0] == pid){
                  updateIndex=i;
                  break;
                }
              }
             sheet.getRange(updateIndex+1,1,1,rowData.length).setValues([rowData]);
      } catch(e){
        console.log(e);
      }
      return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType);
    }
    
  • 当列“A”的值中包含
    pid
    时,您希望将该行替换为
    rowData
  • 当列“A”的值中不包括
    pid
    时,您希望用
    rowData
    追加新行
如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一

修改脚本: 当您的脚本被修改时,它将变成如下所示

function doGet(request) {
  var sheet = SpreadsheetApp.openById("DOCUMENT_ID");
  var range = sheet.getActiveSheet().getDataRange();  // Added
  var data = range.getValues();  // Modified
  var updateIndex = 0;  // Modified
  try{
    var pid = request.parameter.pid;
    var nome = request.parameter.nome;
    var desc = request.parameter.desc;
    var marca = request.parameter.marca;
    var tipo = request.parameter.tipo;
    var preco = request.parameter.preco;
    var ativado = request.parameter.ativado;
    var rowData = [pid, nome, desc, marca, tipo, preco, ativado];
    for(var i = 1; i < data.length; i++){
      if(data[i][0] == pid){
        data[i] = rowData;  // Added
        updateIndex = i;
      }
    }
    if (updateIndex != 0) {  // Added
      range.setValues(data);
    } else {
      sheet.appendRow(rowData);
    }
  } catch(e){
    console.log(e);
  }
  // In your script, "result" is not declared. Please be careful this.
  return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType);
}
功能数据集(请求){
var sheet=电子表格应用程序openById(“文档ID”);
var range=sheet.getActiveSheet().getDataRange();//已添加
var data=range.getValues();//已修改
var updateIndex=0;//已修改
试一试{
var pid=request.parameter.pid;
var nome=request.parameter.nome;
var desc=request.parameter.desc;
var marca=request.parameter.marca;
var tipo=request.parameter.tipo;
var preco=request.parameter.preco;
var-ativado=request.parameter.ativado;
var rowData=[pid、nome、desc、marca、tipo、preco、ativado];
对于(变量i=1;i
注:
  • 在脚本中,未声明
    result
    。请小心这个
  • 修改Web应用脚本时,请将Web应用重新部署为新版本。这样,最新的脚本就会反映到Web应用程序中。因此,请注意这一点。
如果我误解了你的问题,而这不是你想要的方向,我很抱歉。

函数doGet(请求){
function doGet(request) {
      var sheet=SpreadsheetApp.openById("DOCUMENT_ID");
      var data=sheet.getActiveSheet().getDataRange().getValues();
      var updateIndex;
      try{
        var pid=request.parameter.pid;
        var nome=request.parameter.nome;
        var desc=request.parameter.desc;
        var marca=request.parameter.marca;
        var tipo=request.parameter.tipo;
        var preco=request.parameter.preco;
        var ativado=request.parameter.ativado;
        var rowData=[pid, nome, desc, marca, tipo, preco, ativado];
          for(var i=1; i < data.length; i++){
            if(data[i][0] == pid){
              updateIndex=i;
              break;
            }
          }
         sheet.getRange(updateIndex+1,1,1,rowData.length).setValues([rowData]);
  } catch(e){
    console.log(e);
  }
  return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType);
}
var sheet=电子表格应用程序openById(“文档ID”); var data=sheet.getActiveSheet().getDataRange().getValues(); var更新指数; 试一试{ var pid=request.parameter.pid; var nome=request.parameter.nome; var desc=request.parameter.desc; var marca=request.parameter.marca; var tipo=request.parameter.tipo; var preco=request.parameter.preco; var-ativado=request.parameter.ativado; var rowData=[pid、nome、desc、marca、tipo、preco、ativado]; 对于(变量i=1;i