繁体   English   中英

如何使用Google Apps脚本合并Google表格中的列值

[英]How do I Merge Column Values in Google Sheets with Google Apps Script

我知道这个问题与相似。 我很伤心地说,我只是不知道够遵循一个。

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

问题

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

我一直在努力寻求所有类似的答案(提出来),我只是想不通。 下面有更多解释。

电子表格在这里

脚本在这里

代码

    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]);
      }
    }
  }
}

我在日志中得到这个:

[PDT 16-03-24 06:35:44:914] 1.00000006E8

[PDT 16-03-24 06:35:44:916] 1.00000012E8

[PDT 16-03-24 06:35:44:918] 1.00000022E8

这是正确的,这些都是重复的,但我需要选择每隔一行。 那些不是重复的。

我尝试了很多更改,但只是不断重复第二张工作表的列表。 请帮忙。

简单地将value == search替换为value != search行不通的,因为即使saveData中的行之一不同,也会将行添加到第二张表中。 但是它需要检查所有行是否都不同。

如果您确定易失性数据表中没有重复项,则可以通过以下方式进行操作:

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]);
  }
}

要获得每个其他值,您可以检查每行不同或“新”的值

if(value != search) {
    Logger.log(data[i][3]);
     }

并简单地将新行添加为文件

 if(value != search) {
        Logger.log(data[i][3]);
        ss.getSheetByName("All Data").appendRow(data[i]);
      }

祝你好运=)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM