javascript - 防止将重复项附加到目标工作表
问题描述
每次单击按钮时,我都试图将值附加到目标工作表的新行上。我创建了一个对象来检查指定列的目标工作表值。然后,我创建了一个 for 循环来检查附加的值与对象中已有的值,以防止重复,但是该对象显示为“null”并且不会阻止附加重复的行。
我尝试创建一个对象来将新值与目标表中已经存在的值进行比较。我尝试使用布尔值“TRUE”附加一个新列,并检查该列的值是否=“TRUE”,然后不要附加该行。
function sendToOutreach() {
var ss = SpreadsheetApp.openById('someid')
var sheet = ss.getSheetByName('39')
var outreachSheet = SpreadsheetApp.openById('anotherid')
var outreachTab = outreachSheet.getSheetByName("Sheet1")
var tab = ss.getSheetByName(sheet)
var range = sheet.getRange('A2:O' + sheet.getLastRow()).getDisplayValues()
var rx = outreachTab.getRange('c2:c' + outreachTab.getLastRow()).getDisplayValues()
var targetRange = outreachSheet.getRange('A2:Q' + outreachSheet.getLastRow()).getDisplayValues()
var timestamp = Utilities.formatDate(new Date(),"CST","MM/dd/yyyy HH:mm:ss")
var user = Session.getActiveUser()
var object = createObject(targetRange)
Logger.log(object)
for (var a = 0; a<range.length;a++){
if(!object[[a][0]]){
var checkCode = range[a][14]
if(checkCode == 'reason'||checkCode == 'reason'||checkCode == 'reason'||checkCode == 'reason'|| checkCode == 'reason'){
var Info = ([user,timestamp,range[a][0],range[a][1],range[a][2],range[a][3],range[a][4],range[a][5],range[a][6],range[a][7],range[a][9],
range[a][10],range[a][11],range[a][12],range[a][13],range[a][14]])
outreachSheet.appendRow(Info)
}
}
}
}
function createObject (range) {
var object = {}
for(var c=0;c<range.length;c++){
var rx = range[c][2]
if(!object[rx]){
object[rx] = {"rx":rx}
}
}
return object
}
当不应该附加它们时,我不断地附加相同的行。
解决方案
尝试这个:
function sendToOutreach() {
var ss = SpreadsheetApp.openById('someid')
var sheet = ss.getSheetByName('39')
var outreachSheet = SpreadsheetApp.openById('anotherid')
var outreachTab = outreachSheet.getSheetByName("Sheet1")
var tab = ss.getSheetByName(sheet)
var range=sheet.getRange(2,1,sheet.getLastRow()-1,15).getDisplayValues();
var rx=outreachTab.getRange(2,3,outreachTab.getLastRow()-1,1).getDisplayValues();
var targetRange=outreachSheet.getRange(2,1,outreachSheet.getLastRow()-1,17).getDisplayValues();
var timestamp = Utilities.formatDate(new Date(),"CST","MM/dd/yyyy HH:mm:ss")
var user = Session.getActiveUser()
var object = createObject(targetRange)
Logger.log(object)
for (var a=0; a<range.length;a++){
if(!object[range[a][0]]){
var checkCode = range[a][14]
if(checkCode == 'reason'||checkCode == 'reason'||checkCode == 'reason'||checkCode == 'reason'|| checkCode == 'reason'){
var Info = ([user,timestamp,range[a][0],range[a][1],range[a][2],range[a][3],range[a][4],range[a][5],range[a][6],range[a][7],range[a][9],
range[a][10],range[a][11],range[a][12],range[a][13],range[a][14]])
outreachSheet.appendRow(Info)
}
}
}
}
function createObject (range) {
var object={};
for(var c=0;c<range.length;c++){
if(!object.hasOwnProperty(range[c][2])) {
object[range[c][2]]=c+1;
}
}
return object
}
推荐阅读
- java - 如何让 Scanner.next() 保留最后一个“\n”?
- windows - 无法创建看似简单的 stunnel 配置
- java - jsp中获取url参数
- reactjs - 无法在反应中添加if语句
- reactjs - 无法读取未定义的属性“地图”,为什么?
- kubernetes - 修补 Kubernetes 仪表板
- azure-devops - 在 Azure Devops 上使用 Visual Designer 编写 YAML VS
- mysql - 在 Node.js 路由中使用 req.query.ID 和多个 sql 语句返回 undefined
- r - 在 AzureML 实验中安装 mlr 包
- html - Tranform.Rotate css text for print window not working web page