Google apps script 如何基于列匹配合并两行(谷歌电子表格)?

Google apps script 如何基于列匹配合并两行(谷歌电子表格)?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一张表,它通过两种形式获取值,看起来像这样: ID |Name | Agreement 2324 |Lina | 2324 | |I agree 我想做到这一点: ID |Name | Agreement 2324 |Lina | I agree 我想合并具有相同ID值的任意两行, 我是谷歌表单的新手,所以非常感谢您的帮助 我用于从表单获取数据的代码: function doPost

我有一张表,它通过两种形式获取值,看起来像这样:

ID        |Name     | Agreement
2324      |Lina     |
2324      |         |I agree
我想做到这一点:

ID        |Name     | Agreement
2324      |Lina     | I agree
我想合并具有相同ID值的任意两行, 我是谷歌表单的新手,所以非常感谢您的帮助

我用于从表单获取数据的代码:

function doPost (e) {
  var lock = LockService.getScriptLock()
  lock.tryLock(10000)

  try {
    var doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
    var sheet = doc.getSheetByName(sheetName)

    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
    var nextRow = sheet.getLastRow() + 1
    Logger.log(nextRow);

    var newRow = headers.map(function(header) {
      return header === 'timestamp' ? new Date() : e.parameter[header]
    })

    sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])
    Logger.log(newRow)

    sendEmails();

    return ContentService
      .createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
      .setMimeType(ContentService.MimeType.JSON)
  }

  catch (e) {
    return ContentService
      .createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
      .setMimeType(ContentService.MimeType.JSON)
  }

  finally {
    lock.releaseLock()
  }
}

我使用了这个函数,它实际上成功地合并了两个具有相同ID值的行, 我将进一步测试它的任何问题

function mergeDuplicates() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var lastRow = sheet.getLastRow();
  var lastColumn = sheet.getLastColumn();
  var newData = [];
  for (var i in data) {
    var row = data[i];
    var duplicate = false;
    for (var j in newData) {
      if(row[0] == newData[j][0]){
        duplicate = true;
        newData[j][87]=(row[87]);
        Logger.log(newData[j][87])
        Logger.log(row[87])

      }
    }
    if (!duplicate) {
      newData.push(row);
    }
  }
  sheet.clearContents();
  sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}

在您的问题中,示例情况有两个相同的ID。但是,当有超过3个相同的ID时,您会检索到什么结果?或者这种情况在你的情况下不可能发生?这种情况不能发生谢谢你的回答。我不得不为我糟糕的英语水平道歉。我还有一个问题。在示例值中,使用了3列
ID、Name、Agreement
。但是在您的脚本中,是否使用了4列
时间戳、ID、名称、协议
?我无法理解示例值和脚本之间的关系。我可以问一下你的目标和当前问题的细节吗?非常感谢你的回复,我有一个表单,其中一个用户提交了一些信息,id通过该表单生成,该表单将信息发送到工作表,然后向另一个人发送一封包含id的电子邮件,另一个用户应该填写一个只包含两个字段的表单,一个用于id,另一个用于协议,并且此表单提交到同一个电子表格,所以我只是尝试将两个响应链接到同一行