Google Apps 脚本删除 2 个关键字之间的文本/行

问题描述 投票:0回答:2

我想使用谷歌应用程序脚本将另一个文档的完整内容复制到当前文档,然后执行一些清理。

我能想到的工作流程是:

  1. 清除当前文档

    DocumentApp.getActiveDocument().getBody().editAsText().setText('');

  2. 从其他文档复制内容(不确定语法是什么)

  3. 查找并删除...。它可以是单行,也可以是多行,中间有表格或图表。例如

之前

这是一只大黑猫。


标题
...桌子在这里
...图在这里

文档结束。

之后

这是一只猫。

文档结束。

我需要帮助为上面的项目 #2 和 #3 创建 Google 应用程序脚本。

google-apps-script google-docs
2个回答
1
投票

我对#3 有一个很好的解决方案。

在谷歌文档中,文本是:

Quero que todo o texto a seguir suma:

start
TEXTO QUE QUERO QUE SUMA
end

Será que deu certo??

在谷歌脚本中:

function BoldBetweenTags() {
var testeid = '1fltAxuhgfUOOdRvvIyXfLz13gxPDvtugUMyAGOK0jcE';
var body = DocumentApp.openById(testeid).getBody();
var text = body.editAsText();
var para = body.getParagraphs();

var startTag = 'start';
var endTag = 'end'

var del = "no";  

  for(var i in para){  
  Logger.log('Parágrafo: '+i)
    var from = para[i].findText(startTag);
    var to =  para[i].findText(endTag);
    if (from != null){var del = "yes";  para[i].editAsText().removeFromParent();}
    if (from == null && to == null && del == "yes"){para[i].editAsText().removeFromParent();}
    if (to != null){var del = "no";  para[i].editAsText().removeFromParent();}
}}

对于#2,你需要

var folder =  DriveApp.createFolder("name of the folder");
var rep = DriveApp.getFileById('your ID');
var repi = rep.makeCopy("name of your new document", folder);

这对我有用


0
投票

对于第 3 项,这是我的工作代码:

function deleteSection(keyword) {

  var start = ' *\<' + keyword + '\> *';
  var end   = ' *\<\/' + keyword + '\> *';

  var bodyElement = DocumentApp.getActiveDocument().getBody();
  var found = 0;

  // have to do reverse else the result is incorrect
  var totalchildren = bodyElement.getNumChildren();
  for (var i=totalchildren-1; i >= 0; i--) {
    if (found == 0) {
      if (bodyElement.getChild(i).asText().findText(end) !== null) {
        bodyElement.getChild(i).asText().replaceText(".*"+end,"");
        if (bodyElement.getChild(i).asText().findText("^ *$") !== null) {
          bodyElement.getChild(i).removeFromParent();
        }
        found = 1;
      }
    } else {
      if (bodyElement.getChild(i).asText().findText(start) !== null) {
        bodyElement.getChild(i).asText().replaceText(start+".*","");
        if (bodyElement.getChild(i).asText().findText("^ *$") !== null) {
          bodyElement.getChild(i).removeFromParent();
        }
        found = 0;
      } else {
        bodyElement.getChild(i).removeFromParent();
      }
    }  
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.