你能发布一个确实找到&的片段吗?请替换文件夹中的所有文件?
我找到了类似的东西, Google Scripts - Find and Replace Function that searches multiple documents
但是在Google云端硬盘中的每个文件中搜索一次,而不是在文件夹中搜索。由于我现在只是通过示例学习Google Apps脚本,所以我不能自己做那么小的一步。
编辑:进一步更换部分。
DocumentApp.openById
会返回Document
对吗?
但是,我在replaceText
类型文档中找不到Document
方法:
https://developers.google.com/apps-script/reference/document/document
好吧,我接着深入挖掘,发现了另一个例子,
Google Apps Script document not accessible by replaceText(),表示应从replaceText
调用var body = doc.getActiveSection()
方法。但是,我在the Document
type doc中找不到getActiveSection
方法。
请帮忙。 THX
答案 0 :(得分:1)
首先要抓住你的文件夹,这可以通过几种方式完成。
如果您为有限的受众编写脚本,并且您只使用特定文件夹,则可以使用DriveApp.getFolderById(id)。当您导航到文件夹时,可以在驱动器Web应用程序的URL中找到该ID:
https://drive.google.com/a/yourcompany.com/?tab=mo#folders/0B5eEwPQVn6GOaUt6Vm1GVjZmSTQ
一旦你拥有了这个id,就可以在你引用的答案中使用相同的代码,迭代遍历该特定文件夹的文件迭代器:
function myFunction() {
var files = DriveApp.getFolderById("0B5eEwPQVn6GOaUt6Vm1GVjZmSTQ").getFiles();
while (files.hasNext()) {
var file = files.next();
Logger.log(file.getName());
var doc = DocumentApp.openById(file.getId());
doc.replaceText("My search string or regex", "My replacement string");
}
Logger.log("Done")
}
如果您只知道其名称,则获取文件夹的其他方法是使用DriveApp.getFoldersByName(name)返回文件夹迭代器。如果你知道你只有一个具有该名称的文件夹,那么你需要简单地获取迭代器中的第一个也是唯一一个元素:
function myFunction() {
var folders = DriveApp.getFoldersByName("myfoldername");
var myFolder = null;
if (folders.hasNext())
myFolder = folders.next();
if (myFolder !== null) {
// do stuff
} else {
// exit gracefully
}
此外,如果您有多个具有相同名称的文件夹,则必须在while循环中迭代它们(类似于您链接的代码中的文件迭代器)并找到一个标记,证明这是您正在查找的文件夹for(即你可以在那里有一个带有特定名称的空文件)