Javascript 谷歌应用程序脚本-如何清除多个单元格';基于其他单元格的内容?

Javascript 谷歌应用程序脚本-如何清除多个单元格';基于其他单元格的内容?,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我试图检查一列的值是否有“不显示”字样,如果一个单元格有该值,我需要它删除同一行上的一些单元格,例如,如果列I5的值为“不显示”,我需要清除单元格B5、C5、D5、F5、G5。我试着写一些东西,但它不起作用,而且我对这方面还比较陌生。谢谢你的帮助我相信你的目标如下 当每行“I”列的值为No Show时,需要清除“B”、“C”、“D”、“F”和“G”列的单元格值 您希望使用谷歌应用程序脚本实现这一点 在这种情况下,我建议使用TextFinder和RangeList类的clearContent(

我试图检查一列的值是否有“不显示”字样,如果一个单元格有该值,我需要它删除同一行上的一些单元格,例如,如果列I5的值为“不显示”,我需要清除单元格B5、C5、D5、F5、G5。我试着写一些东西,但它不起作用,而且我对这方面还比较陌生。谢谢你的帮助

我相信你的目标如下

  • 当每行“I”列的值为
    No Show
    时,需要清除“B”、“C”、“D”、“F”和“G”列的单元格值
  • 您希望使用谷歌应用程序脚本实现这一点
在这种情况下,我建议使用TextFinder和RangeList类的
clearContent()
方法。示例脚本如下所示

示例脚本: 请将以下脚本复制并粘贴到Google电子表格的脚本编辑器中,并设置要使用的工作表名称,然后在脚本编辑器中运行函数
myFunction

function myFunction() {
  const sheetName = "Sheet1"; // Please set the sheet name.

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  const ranges = sheet
    .getRange("I1:I" + sheet.getLastRow())
    .createTextFinder("No Show")
    .matchCase(true)
    .findAll()
    .flatMap(r => {
      const row = r.getRow();
      return ["B", "C", "D", "F", "G"].map(e => e + row);
    });
  if (ranges.length > 0) sheet.getRangeList(ranges).clearContent();
}
  • 当运行此脚本时,当每行的列“I”的值为
    No Show
    时,将清除列“B”、“C”、“D”、“F”和“G”的单元格值
  • 关于
    不显示
    的搜索值,当您要检查
    不显示
    不显示
    等时,请删除
    。匹配框(true)
参考资料:

非常有效,非常感谢。我能请你解释一下这部分吗?flatMap(r=>{const row=r.getRow();返回[“B”、“C”、“D”、“F”、“G”].map(e=>e+row);});如果(ranges.length>0)sheet.getRangeList(ranges.clearContent();}我现在注意到你的答复了。我为此道歉。从您的回复中,我确认您的问题已得到解决。我很高兴。关于您的附加问题,在本例中,范围列表创建为A1Notation。使用此范围列表,将清除单元格值。当你的问题解决后,请按“接受”按钮。与您有相同问题的其他人也可以将您的问题作为可以解决的问题。我认为你的问题和解决方案对他们会有帮助。如果你找不到按钮,尽管告诉我。顺便问一下,当你发表评论时,你能对我的回答发表评论吗?这样,当我登录Stackoverflow时,我可以注意到。