javascript - 从电子表格更新数据 - Apps 脚本

标签 javascript google-apps-script google-sheets

我正在将多个电子表格的数据传输到一个电子表格,我所做的是将某些列的最后一个数据传输到主电子表格,并将它们插入到某些列的最后一个可用行中,目前,我插入所有数据,但我想知道如何让它检查主电子表格,以便如果这些数据已经存在,它不会删除它们而是更新它们。我的脚本如下...

  function  Gas10(){  
  var ss1 = SpreadsheetApp.openById("ID"); 
  var ssh1 = ss1.getSheetByName("Sheet 1");


var lastRow1 = ssh1.getLastRow();
var gtRange1 = ssh1.getRange("C"+(lastRow1)+":K"+(lastRow1)).getValues();
var gtRange2= ssh1.getRange("A" + (lastRow1)).getValue();

var ss2 = SpreadsheetApp.getActiveSpreadsheet();

var ssh2 = ss.getSheetByName("Sheet 2");
var lastRow2 = ssh2.getLastRow() + 1;
var setRange1 = ssh2.getRange(lastRow2, 4, gtRange1.length, gtRange1[0].length).setValues(gtRange1);
var setRange2 = ssh2.getRange(lastRow2, 3).setValue(gtRange2);            
}  

我需要知道当我插入一条信息时我该怎么做(我已经这样做了),但如果它已经存在则更新它。 This是我创建的示例,以便更好地理解它,在这个示例中,我有两张工作表,其中我将工作表 1 中的数据传递到工作表 2,我正在寻找的是工作表 2 更新所有相等的数据至(名称、编号、项目)。我希望现在我能更好地理解我在寻找什么。

最佳答案

基本上你要做的是

  • 获取要添加到目标电子表格的新行
  • 获取目标电子表格的所有必需数据
  • 检查新行数据是否与目标数据数组中的数据相同
    • 如果是,请更改 ID 值
  • 将更改的数据粘贴到目标电子表格中

基于this spreadsheet代码应该看起来像这样

function  Gas10(){  
    var ss1 = SpreadsheetApp.getActiveSpreadsheet();
    var ssh1 = ss1.getSheetByName("Sheet 1");
    var ssh2 = ss1.getSheetByName("Sheet 2");
    var lastRow1 = ssh1.getLastRow();
    var lastCol1 = ssh1.getLastColumn();
    var newLine = ssh1.getRange(lastRow1, 2, 1, lastCol1 - 1 ).getValues();
    var destDatas = ssh2.getDataRange().getValues();
  for (var i = 1; i < destDatas.length; i++)
  {
      if (newLine[0][0] == destDatas[i][0]
       && newLine[0][1] == destDatas[i][1]
        && newLine[0][2] == destDatas[i][2])
      {
       destDatas[i][3] = newLine[0][3];
      }
  }
  // add newLine to destDatas
    destDatas.splice(destDatas.length, 0, newLine[0]);
  var lastColumn = ssh2.getLastColumn();
  var lastRow2 = ssh2.getLastRow() + 1;
  ssh2.getRange(1, 1,  destDatas.length, lastColumn).setValues(destDatas);
  ssh1.deleteRow(lastRow1);
}

关于javascript - 从电子表格更新数据 - Apps 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52168589/

相关文章:

javascript - HTML 不想被执行

javascript - 如何转置/旋转多维数组?

google-apps-script - 在脚本的Google表格中获取带有#NA的公式的错误注释

google-sheets - 我可以从YouTube链接列表中提取观看次数信息吗?

javascript - 当一次按下 2 个以上的键时,p5.js keyIsDown() 行为不一致

IE 中的 Javascript 堆栈跟踪(或者可能只是一个简单的 Javascript 错误)

javascript - 在 LocalStorage 上显示/隐藏无法正常工作,要么全有要么全无

google-apps-script - 如何修复 Google Sheets RTL?

google-apps-script - 脚本-DriveApp.getFilesByName-获取最新版本?

arrays - 在 Google 表格中,如何仅显示一个变量的分组条形图?