作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认识到这个问题类似于 this one 。我很遗憾地说,我只是不知道足以遵循那个。
我也认识到它与Google tutorial非常相似。 ,但他们正在创建一个新数组,而我需要组合数组。
问题
我正在尝试从易失列表创建永久列表。永久列表将每天更新。我需要脚本来查找一张纸上的重复项,并将所有新内容复制到另一张纸上。我很确定我的问题主要在于我的逻辑。
我一直在猛烈抨击我能找到的所有类似答案(已注释掉),但我就是想不通。下面有更多解释。
代码.gs
function updateRoster() {
var ss = SpreadsheetApp
.openById("15DRZRQ2Hcd7MNnAsu_lnZ6n4kiHeXW_OMPP3squbTLE");
var data = ss
.getSheetByName("Volatile Data")
.getDataRange()
.getValues();
var saveData = ss
.getSheetByName("All Data")
.getDataRange()
.getValues();
for (i in data) {
var value = data[i][3];
for (j in saveData) {
var search = saveData[j][3]
if(value == search) {
Logger.log(data[i][3]);
}
}
}
}
我在日志中得到了这个:
[16-03-24 06:35:44:914 PDT] 1.00000006E8
[16-03-24 06:35:44:916 PDT] 1.00000012E8
[16-03-24 06:35:44:918 PDT] 1.00000022E8
哪个是正确的,这些是重复项,但我需要选择每个其他行。那些不重复的。
我已经尝试了很多更改,但我只是不断重复第二张表的列表。请帮忙。
最佳答案
简单地用 value != search
替换 value == search
是行不通的,因为即使 saveData
是不同的。但它需要检查所有行是否不同。
如果您确定您的 volatile 数据表中没有任何重复项,您可以这样做:
var saveSheet = ss.getSheetByName("All Data");
loopThroughData:
for (i in data) {
var value = data[i][3];
for (j in saveData) {
var search = saveData[j][3]
if(value === search) continue loopThroughData;
//here we leave the inner loop and jump back to the top if
//even one row is equal
}
saveSheet.appendRow(data[i]);
}
编辑:但是,通常最好使用函数而不是 continue
和标签的组合。因此我更喜欢这个解决方案:
function updateRoster() {
...
function areThereDuplicates(i) {
var value = data[i][3];
for(var j in saveData) {
if(saveData[j][3] === value) return true;
}
return false;
}
for (i in data) {
if(!areThereDuplicates(i)) saveSheet.appendRow(data[i]);
}
}
关于javascript - 如何将 Google 表格中的列值与 Google Apps 脚本合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36201974/
我是一名优秀的程序员,十分优秀!