首页 > 解决方案 > 有没有办法根据我突出显示的颜色自动将文本移动到 Google Docs 中的某些部分?

问题描述

所以让我们看看我是否能正确解释这一点。

我在工作中使用 Google Doc 来跟踪我的待办事项列表。当我添加一些需要立即注意的内容时,我会用亮黄色突出显示该项目符号和任务描述。较小的任务,获得不同的颜色等。我将任务分解为不同标题下的不同列表,具体取决于它用于什么类型的项目(所以我有一个“网站”标题,然后是我所有任务的项目符号列表需要这样做与更新网站有关,我有一个“视频”标题和下面的列表,其中包含我需要为视频执行的所有任务,等等)。然后,在每个部分中,我会根据优先级突出显示。

我的列表很长,有很多部分,如果有可能当我用亮黄色将给定部分中的任务突出显示为“最高优先级”时,它会 - 自动 - 被复制并移动到一个部分在我的文档顶部的“优先级”标题下,这样我就可以在一个地方查看我想要在所有项目中完成的所有高优先级任务,而无需扫描文档中的每个部分并可能遗漏一些东西.

这可能吗?我听说过 Google Apps Script,但从未真正深入研究过它。我有基本的编码知识,通常可以在 HTML、Javascript 等方面找到自己的方法。

这样的事情可能吗?我该怎么做呢?

标签: google-apps-scriptgoogle-docsgoogle-docs-apigoogle-apps-script-addongoogle-apps-script-editor

解决方案


布伦达。

你可能会从这个开始:

var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var lists = body.getListItems();

var childIndex = 0;
for (var i = 0; i < doc.getNumChildren(); i++) {
    var child = doc.getChild(i);
    if (child.getType() == DocumentApp.ElementType.LIST_ITEM){
      while(child.getType() == DocumentApp.ElementType.LIST_ITEM){
        child = doc.getChild(i)
        childIndex = body.getChildIndex(child);
        Logger.log(childIndex)
        i++
      }
      child = doc.getChild(i-2)
      var listId = child.getListId();
      Logger.log(childIndex)

      // You'll want to do something like...
      // if child.getBackgroundColor() == "Yellow"...

        // Here you can add an element to your "Priorities" list as well:
        // var newElement = child.getParent().insertListItem(childIndex, elementContent);
        // newElement.setListId(child);
      break;
    }
}

这是一个很好的参考:https ://stackoverflow.com/a/20729760/5415398

另一个:https ://stackoverflow.com/a/26419644/5415398

在这里,您将获得文档、其正文以及其中包含的任何列表。您可以直接使用“lists”变量,也可以循环遍历文档的所有子项,对于任何 LIST_ITEM,可以根据需要对其进行处理。

您将尝试使用“.getBackgroundColor()”函数捕获列表项的突出显示,如果符合您的条件,则将该项目添加到您的优先级列表中。

(注意:这个答案可以而且应该改进以使其完整。)


推荐阅读