gpt4 book ai didi

javascript - 如何将 Google 表格中的列值与 Google Apps 脚本合并

转载 作者:行者123 更新时间:2023-12-02 14:50:44 25 4
gpt4 key购买 nike

我认识到这个问题类似于 this one 。我很遗憾地说,我只是不知道足以遵循那个。

我也认识到它与Google tutorial非常相似。 ,但他们正在创建一个新数组,而我需要组合数组。

问题

我正在尝试从易失列表创建永久列表。永久列表将每天更新。我需要脚本来查找一张纸上的重复项,并将所有新内容复制到另一张纸上。我很确定我的问题主要在于我的逻辑。

我一直在猛烈抨击我能找到的所有类似答案(已注释掉),但我就是想不通。下面有更多解释。

Spreadsheet here

Script here

代码.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com