根据其他Google表格单元格值,删除Google表格中的行

时间:2016-07-08 15:48:38

标签: google-apps-script google-sheets

是否可以在另一张Google表格中根据指定范围的单元格值编写一个谷歌脚本来删除Google表格中的行?

我已经在同一个google工作表中完成了一些关于如何完成这项工作的研究,但是我编写google工作表脚本的经验有限,这使我无法理解我所描述的内容是否可能,以及如何实现。

这是我到目前为止的一个脚本。如果F列中的单元格包含单词" id:123456",这将删除我的活动电子表格范围内的行。我希望能够做的是修改此代码,以便如果单词" id:123456"找到后,它会查看另一个Google表格的另一列,并删除包含" id:123456"的行。

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Sheet1'); // change to your own
  var values = s.getDataRange().getValues();

  for (var row in values)
    if (values[row][6] == 'id:123456')

      s.deleteRow(parseInt(row)+1);
};

1 个答案:

答案 0 :(得分:2)

我没有测试过这段代码,因此您可能需要进行一些修改才能成功运行。但基本的想法很简单:一次打开两张纸,并根据第一张纸上的if在第二张纸上进行更改。

var ss1 = SpreadsheetApp.getActiveSpreadsheet();
var ss2 = SpreadsheetApp.getByID(0); //Change to the other sheet's ID, or somehow open it.
var s1 = ss1.getSheetByName('Sheet1'); // change to your own
var s2 = ss2.getSheetByName('Sheet1'); // change to your own
var values = s1.getDataRange().getValues();

for (var row in values)
  if (values[row][6] == 'id:123456')
    var other_values = s2.getDataRange().getValues();
      for (var other_row in other_values)
        if (other_values[row][6] == 'id:123456')
          s2.deleteRow(parseInt(other_row)+1);

主要担心和测试:我复制了你的删除代码,但由于我们删除了行,除非我们从底部开始,否则我们可能会开始缺失。 (假设10行中的第4行和第8行包含要删除的内容;您可能最终删除4,其中8到7,但是我们仍然删除第8行 - 这意味着我们错过了我们应该删除的行删除了我们不应该有的行。)