在Google Docs中从两个不同的表中删除行时遇到困难 [英] Difficulties getting rows deleted from two different tables in Google Docs

查看:12
本文介绍了在Google Docs中从两个不同的表中删除行时遇到困难的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望你们中有一人愿意帮助我。很快就会很明显地看到,我对Google Apps脚本(还有循环,但我正在努力学习)还是个新手。我希望我的代码不会让您感到畏缩。

基本上在示例文档中
(https://docs.google.com/document/d/1VPua9T1d9qQFMCuvTlIqnvmhhMoplimZar4oAemAGPM/edit?usp=sharing),我想删除包含职员Derek的所有行。从日志中可以看出,这将是第17行和第18行(在标题为本周日程安排的第二个表中)和第25-29行(在第四个表中以议程/备注开头)。

如果我单独运行每个循环,下面的代码将运行得很好,并删除我想要的行(除了抛出一个错误Re:我刚刚忽略的子索引)。

当我尝试同时运行它们时,我接近了,但在第一个表中,有一行(在顶表中)没有删除。我试着先跑第二圈,这让情况更糟。如果您能提供任何帮助,我们将不胜感激。

function DeleteRows() {
var doc = DocumentApp.getActiveDocument()
var body = doc.getBody();
var tables = body.getTables();
var numRows = tables[1].getNumRows();
var numRows2 = tables[3].getNumRows();

   
var row;
var val;
  
 for(row = 0; row<numRows-1; row++) {
 val = tables[1].getCell(row, 1).getText 

 tables[1].getRow(16).removeFromParent();    
     
 var row2;
 var val2;
    
for(row2 = 0; row2<numRows2-1; row2++) {    
val2 = tables[3].getCell(row2, 1).getText();
tables[3].getRow(24).removeFromParent(); 
     
     

  Logger.log(numRows);
  }
 }
}

推荐答案

基本上,您可以通过以下方式使用‘derek’删除所有表行:

function DeleteRows() {
  var body = DocumentApp.getActiveDocument().getBody();
  var found_element = body.findText('Derek');
  while (found_element != null) {
    found_element.getElement().getParent().getParent().getParent().removeFromParent();
    found_element = body.findText('Derek', found_element)
  }
}

它只会找到每个‘Derek’,获取其父级的父级{ table row : { table cell : { paragraph: { text } } } }并将其删除。

对于您的情况,它只能部分工作,因为您的表已经合并了单元格。如果要查找Derek行之后的所有空行并将其删除,则需要一个更复杂的解决方案。

但是我没能理解你的剧本。为什么需要嵌套循环?如果你找到了‘Derek’,你的代码里有什么条件?

更新

要从表2中删除第17-18行,从表4中删除第25-29行,可以使用此函数:

function DeleteRows2() {
  var tables = DocumentApp.getActiveDocument().getBody().getTables();
  [17,18].reverse().forEach(n => tables[1].getRow(n-1).removeFromParent());
  [25,26,27,28,29].reverse().forEach(n => tables[3].getRow(n-1).removeFromParent());
}

这篇关于在Google Docs中从两个不同的表中删除行时遇到困难的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆