如何使用doc.replaceText作为Google Doc的标题?

时间:2017-06-21 02:55:33

标签: google-apps-script

背景信息:我有一个包含Google Docs的文件夹,其中包含有关它们的编号信息。我提供了dummy folder给你一个想法。基本上我想在文档和标题中用“文件17”,“文件17和文件18”替换“文件16”,即“文件X”和“文件X + 1”。 /强>

通过在线使用doc.replaceText和Universal Find and Replace函数,我能够为这个确切的场景创建一个for循环,并且它在Document的内容中完美地工作。我不得不以相反的顺序循环它,所以16 - > 17不会变成16 - > 17 - > 18.完整的代码和应用程​​序脚本位于我提供的文件夹中,但这里特别是for循环:

for (i = 30; i > 10; i--) {
   var v = i + 1;
   doc.replaceText("File " + i, "File " + v);
};

我正在寻找一种方法来使用类似的for循环来替换部分文档的标题。所以要将“Title 16”更改为“Title 17”,将“Title 17”更改为“Title 18”等.Google App Scripts中是否有允许我这样做的功能?

1 个答案:

答案 0 :(得分:0)

Document类允许您在单个文档的级别进行更改。 replaceText()是Body类的方法,不能在这种情况下使用。

使用DriveApp访问文件系统级别的文件。 getFiles()返回FileIterator类的实例,该实例是节点的链接列表。每个节点引用列表中的下一个节点 - 如果next()返回' null',则表示列表的结尾。缺点是你只能从头到尾阅读文件,不能跳过。

function assignFileNames(){

var iterator = DriveApp.getFolderById(yourFolderId).getFiles();
var file;
var i=0;

while(iterator.hasNext()) {

i++;
file = iterator.next();
file.setName("name " + i);


}

}

您可以通过使用DocumentApp并按名称或ID打开每个文件来获得相同的结果,但这样会更慢,效率更低。