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,另一个用于协议,并且此表单提交到同一个电子表格,所以我只是尝试将两个响应链接到同一行