【问题标题】:Delete rows containing value from another sheet in Google Sheets using Apps Script使用 Apps 脚本从 Google 表格中的另一张表格中删除包含值的行
【发布时间】:2022-01-06 02:33:47
【问题描述】:

我有两个名为“数据库”和“表单”的电子表格。

如果“数据库”工作表中的“日期”列包含使用 Apps 脚本的“表单”工作表的“C2”单元格匹配值,我想删除这些行。这是我所拥有的:

function submitFormData() {

  const sheet = SpreadsheetApp.getActiveSpreadsheet();

  const ui=SpreadsheetApp.getUi();

  const form = sheet.getSheetByName("Form");
  
  const database = sheet.getSheetByName("Database");

  const date = form.getRange("C2").getValue(); // Get date value from cell "C2" of 'Form' sheet

  const databaseDates = database.getRange("A2:A").getValues(); // Get all values in 'Date' column of 'Database' sheet

  const blankRow = database.getLastRow()+1;

  const lastRow = database.getLastRow();

  // Loop below checks for and deletes rows that meet the stated condition :

  for ( var i = 2 ; i <= lastRow ; i++){
    if(databaseDates[i] == date){
      database.deleteRow[i];
      }
  }

  // Regardless, paste newly submitted data onto blank rows :

  database.getRange(blankRow,1,3).setValue(form.getRange("C2").getValue());
  database.getRange(blankRow,2,3).setValues(form.getRange("B4:B6").getValues());
  database.getRange(blankRow,3,3).setValues(form.getRange("C4:C6").getValues());

  ui.alert("New Data Saved");

}

无论出于何种原因,“for 循环”无法验证任何条件,因此脚本只是跳转到循环下方执行 setValue() 操作。这是我要实现的目标的说明:desired sheet result

作为一个完整的脚本新手,实际上是整体编程,我怀疑为“for循环”等编写Javascript数组是一个错误 - 但是在我将本教程复制粘贴到一个新的之后,事情变得更加奇怪了表只是为了测试这主要是我的脚本能力差还是系统中的潜在错误:https://codewithcurt.com/how-to-clear-delete-insert-and-replace-row-using-google-apps-script/

..你猜对了,我什至无法让本教程中的 deleteRow() 函数工作。

其他注意事项:

  1. 我已经清除了浏览器 cookie,刷新了我的工作表,并且浏览器 (Brave) 和操作系统 (MacOS) 都是最新的
  2. “表格”表的“C2”单元格中的数据格式与“数据库”表的“日期”列中的数据格式相同(日期格式)

最后,链接到一个虚拟表:https://docs.google.com/spreadsheets/d/1U4RaP7TG5_zfpROQ2ghAG3KKARKjK_YDc7KT02_0F_k/copy

感谢您的帮助!

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    简而言之,Google Apps 脚本有时会乱序运行电子表格调用以优化工作。您可以使用SpreadsheetApp.flush() 来防止这种情况。尝试在你的 for 循环下添加它。

    【讨论】:

    • 试过了,没用。我把它放在代码中,就像在本教程中一样 newbedev.com/… 。我想知道脚本没有发挥作用的错误是否可以被其他人复制以阐明真正的问题是什么(或者如果“for循环”的编写方式有错误可以纠正)。否则,感谢您的宝贵时间。
    • 我再次查看后注意到了一些事情。第一个,也可能是您的问题是您在删除行而不是括号的行上使用方括号。您可能遇到的第二个问题是您在遇到行时正在删除它们。当您继续循环时,这可能会影响行位置。
    • 修复了主要问题(将发布更新),现在我遇到了您提到的第二个问题。这是有道理的,因为我注意到并非所有行都被删除了。如果我无法解决这个问题,可能会发布一个单独的问题。再次感谢。
    猜你喜欢
    • 2016-10-21
    • 1970-01-01
    • 2021-10-18
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多