使用数组循环将值与另一个电子表格进行比较,然后写入新值
Compare value to another spreadsheet using array loop and write new values
大家好,我在项目中实现数组循环时遇到了问题。。。这是我想做的。
我有一个名为"红皮书"的电子表格,一旦员工更新了它,这个表格就会定期更新。我有一列,他们可以在其中选择提交他们刚刚在特定行中输入的数据(编辑这个列会调用onEdit函数)。
然后,数据将被写入另一个名为"原始数据"的电子表格(不同的文件)
对于每次提交,我都有一个唯一的标识符。我需要onEdit代码来执行以下操作。。。
- 遍历列A以查找唯一标识符
- 一旦找到,更新第1列到第5列中的数据
以下是我到目前为止的脚本:
function TransferToAppData(e) {
var destFile = SpreadsheetApp.openById('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
var destSheet = destFile.getSheetByName("Raw App Data");
var ss = e.source;
var s = ss.getActiveSheet();
var uniConstRng = s.getRange("A1");
var uniqueConstVal = uniConstRng.getValue();
var NextOpenRow = destSheet.getLastRow() + 1;
var ActiveRow = e.range.getRow();
Logger.log(ActiveRow);
var uniqueVal = s.getRange(ActiveRow,1).getValue();
var add = s.getRange(ActiveRow,2).getValue();
var name = s.getRange(ActiveRow,3).getValue();
var dt = s.getRange(ActiveRow,5).getValue()
if (uniqueVal == "") {
s.getRange(ActiveRow,1).setValue(uniqueVal + 1);
uniConstRng.setValue(uniqueVal + 1);
var transferVals = s.getRange(ActiveRow,1,1,5).getValues();
Logger.log(transferVals);
destSheet.getRange(NextOpenRow,1,1,5).setValues(transferVals);
destSheet.getRange(NextOpenRow, 6).setValue("Applicant");
}
else {
var destLastRow = destSheet.getLastRow();
var destDataRng = destSheet.getRange(2,1,destLastRow,5)
var destValues = destDataRng.getValues();
var sourceValues = s.getRange(ActiveRow,1,1,5).getValues();
for( var i = 0; i < destValues.length; ++i){
if (destValues([i][0])==uniqueVal) {
for(n=0;n<destValues[0].length;++n){
///I"m stuck!!!
}
}
}
}
}
正如您所看到的,我已经进行了第一个数组循环,但我很难弄清楚如何进行第二个循环,该循环只在找到唯一值的行上迭代,并将源数据写入,只写入找到唯一值而不是整个表的行。
我想明白了。。。
下面是代码,下面是它的工作原理。。。
当编辑某些列中的值时,将激发此代码。
1-它查找位于已编辑行中的唯一标识符。
2——将该标识符与另一个电子表格中的一列唯一标识符进行比较。
3-当发现匹配时,它将更改写入新的电子表格并退出循环
function TransferToAppData(e) {
var destFile = SpreadsheetApp.openById('1V3R2RnpA8yXmz_JDZSkBsK9tGR2LjHZp52p5I1CuQvw');
var destSheet = destFile.getSheetByName("Raw App Data");
var ss = e.source;
var s = ss.getActiveSheet();
var uniqueConstRng = s.getRange("A1");
var uniqueConstVal = uniqueConstRng.getValue();
var NextOpenRow = destSheet.getLastRow() + 1;
var ActiveRow = e.range.getRow();
var uniqueVal = s.getRange(ActiveRow,1).getValue();
if (s.getRange(ActiveRow,2).getValue() == "" || s.getRange(ActiveRow,3).getValue()=="" || s.getRange(ActiveRow,4).getValue()=="" || s.getRange(ActiveRow,5).getValue()=="") {
s.getRange(ActiveRow,13).clearContent();
Browser.msgBox("Address, Name, Date Entered & Rent are required fields!");
} else{
if (uniqueVal == "") {
s.getRange(ActiveRow,1).setValue(uniqueConstVal + 1);
uniqueConstRng.setValue(uniqueConstVal + 1);
var transferVals = s.getSheetValues(ActiveRow,1,1,5);
destSheet.getRange(NextOpenRow,1,1,5).setValues(transferVals);
destSheet.getRange(NextOpenRow, 6).setValue("Applicant");
}
else {
var destLastRow = destSheet.getLastRow();
var destValues = destSheet.getSheetValues(2,1,destLastRow,5);
var sourceValues = s.getSheetValues(ActiveRow,1,1,5);
for(var i = 0; i < destValues.length; ++i){
if (destValues[i][0]===uniqueVal) {
destSheet.getRange(i+2,1,1,5).setValues(sourceValues);
break;
}
}
}
s.sort(1,false);
destSheet.sort(1,false);
}
}
相关文章:
- 如何放置ÅÄ和#214;在javascript数组中,然后将其与html文本进行比较
- 如何比较两个数组,然后返回差异的索引
- MongoDB:将Days字段添加到DB中的Date Type字段中,然后与当前日期进行比较
- jQuery或javascript可以从文本字符串中确定日期,然后比较两个日期
- 动态创建一个数组,然后遍历另一个数组以比较数据是否存在
- 检索两个列表,对值进行排序和比较,然后显示所有结果
- 比较 URL 字符串和菜单字符串,然后使用 jQuery 添加类
- 处理异常:读取键并进行比较,然后输出,否则出错
- 将一个电话号码数组转换为单个号码,然后用javascript比较这些号码
- 使用数组循环将值与另一个电子表格进行比较,然后写入新值
- HTML将参数传递给javascript函数,然后javascript函数进行日期比较,然后javascript返回以H
- 如何将数组推入关联数组,然后检索值进行比较
- 使用& # 39;这个# 39;选择属性,然后与选定的HTML属性进行比较
- 找到HTML日期,然后比较当前数据
- JSON与Array的比较,有没有一种方法可以将一个转换为另一个,然后再转换回来
- 将变量保存在本地存储中,然后进行比较
- 如何比较,然后在必要时在AJAX中更新
- 循环通过每个输入,然后再次循环并进行比较
- Javascript-比较两个数组,然后在满足条件的情况下推送到新数组
- Javascript如何比较两个值,然后更改背景颜色