【发布时间】:2014-02-25 08:20:22
【问题描述】:
我有一个关于 Google 脚本的问题。我今年 2 月才开始使用 Google Script,所以对它还没有深入的了解。无论如何,我的问题是:
如果某行的某些值存在于另一个工作表中,我可以删除该行吗?我尝试了我在互联网上找到的几个概念,但我无法提出一个有效的功能。
这里是Google Doc 查看详细信息。
例如,在 Sheet 1 中,我有两行:
姓名 |地点 |年龄
卡尔 |佛罗里达 | 45
迈克 |佛罗里达 | 41
在第 2 页中:
姓名 |地点 |年龄
迈克 |佛罗里达 | 41
脚本应该删除表 1 中的 Mike Florida 行,因为它在表 2 中有重复的数据。所以基本上,如果表 2 中的数据存在于表 1 中,它应该在表 1 中删除。但棘手的部分是,我只需要比较第 1 列和第 2 列。第 3 列并不重要。如果工作表 2 中的第 1 列和第 2 列在工作表 1 中具有相同的精确值,则应在工作表 1 中将其删除,而工作表 2 中的数据应保留。
我在 Google 网站上尝试了这个tutorial,但我仍然无法比较两张表并删除重复的数据。
非常感谢。任何帮助/想法/建议将不胜感激。 :)
+++++++++++
我现在刚刚想出了一个代码并使用了 2D Arrays Library。
function deleteRowInSheet1() {
var s1 = SpreadsheetApp.openById("COPY SPREADSHEET ID HERE").getSheetByName('Sheet1');
var s2 = SpreadsheetApp.openById("COPY SPREADSHEET ID HERE").getSheetByName('Sheet2');
var values1 = s1.getDataRange().getValues();
var values2 = s2.getDataRange().getValues();
// Check if Mike exists in SS1.
if (ArrayLib.find(values2, 0, 'Mike') != -1) {
for( var row = values1.length -1; row >= 0; --row ) {
if (values1[row][0] == 'Mike')
s1.deleteRow(parseInt(row)+1);
}
}
}
但是,此代码仅获取特定值,即 Mike。如果 Sheet 2 中存在 Mike 行,Sheet 1 中的行 Mike 也将被删除。我尝试更多地修改代码以比较两个不同工作表中的两个值,但我似乎无法使其工作。
【问题讨论】:
-
只是一个细节问题:脚本是否也应该检查工作表 1 中的重复项还是不会发生这种情况?
-
嗨@Sergeinsas,这部分不会发生,因为工作表 1 的内容是独一无二的。我现在能够想出一个几乎与我需要的代码相似的工作代码。但我仍然有一个问题。我更新了我的问题。您可能对将这两个值与我当前的代码进行比较有任何想法:)
标签: javascript google-apps-script google-sheets