Replace 查找&;使用Google Apps脚本替换文件夹中的文件

Replace 查找&;使用Google Apps脚本替换文件夹中的文件,replace,google-apps-script,find,directory,google-docs,Replace,Google Apps Script,Find,Directory,Google Docs,你可以发布一个代码片段,在一个文件夹中的所有文件中查找并替换吗 我确实发现了类似的东西, 但这一次搜索是在谷歌硬盘的每个文件中进行的,而不是在文件夹中。由于我现在只是通过示例学习谷歌应用程序脚本,所以我自己无法迈出这一小步 编辑:进一步了解更换零件。 DocumentApp.openById返回一种类型的文档对吗 但是,我在文档类型文档中找不到replaceText方法: 好吧,我再深入挖掘,发现了另一个例子, ,这表示应从var body=doc.getActiveSection()调用r

你可以发布一个代码片段,在一个文件夹中的所有文件中查找并替换吗

我确实发现了类似的东西,

但这一次搜索是在谷歌硬盘的每个文件中进行的,而不是在文件夹中。由于我现在只是通过示例学习谷歌应用程序脚本,所以我自己无法迈出这一小步

编辑:进一步了解更换零件。

DocumentApp.openById
返回一种类型的
文档
对吗

但是,我在
文档
类型文档中找不到
replaceText
方法:

好吧,我再深入挖掘,发现了另一个例子, ,这表示应从
var body=doc.getActiveSection()
调用
replaceText
方法。但是,我在这两个数据库中都找不到
getActiveSection
方法


请帮忙。thx

第一件事是获取文件夹,这可以通过几种方式实现

如果您正在为有限的读者编写脚本,并且只使用特定文件夹,则可以使用DriveApp.getFolderById(id)。当您导航到以下文件夹时,可以在驱动器web应用的url中找到该id:

https://drive.google.com/a/yourcompany.com/?tab=mo#folders/0B5eEwPQVn6GOaUt6Vm1GVjZmSTQ
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")
}
function myFunction() {
  var folders = DriveApp.getFoldersByName("myfoldername");
  var myFolder = null;
  if (folders.hasNext())
    myFolder = folders.next();
  if (myFolder !== null) {
    // do stuff
  } else {
    // exit gracefully
  }
一旦您有了该id,您就可以简单地在引用的答案中使用相同的代码,对该特定文件夹的文件迭代器进行迭代,如下所示:

https://drive.google.com/a/yourcompany.com/?tab=mo#folders/0B5eEwPQVn6GOaUt6Vm1GVjZmSTQ
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")
}
function myFunction() {
  var folders = DriveApp.getFoldersByName("myfoldername");
  var myFolder = null;
  if (folders.hasNext())
    myFolder = folders.next();
  if (myFolder !== null) {
    // do stuff
  } else {
    // exit gracefully
  }
如果您只知道文件夹的名称,另一种获取该文件夹的方法是使用DriveApp.getFoldersByName(名称),它返回一个文件夹迭代器。如果您知道只有一个同名文件夹,则只需获取迭代器中的第一个也是唯一一个元素:

https://drive.google.com/a/yourcompany.com/?tab=mo#folders/0B5eEwPQVn6GOaUt6Vm1GVjZmSTQ
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")
}
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循环中对其进行迭代(类似于您链接的代码中的文件迭代器),并找到一个标记来证明这就是您要查找的文件夹(即,其中可能有一个具有特定名称的空文件)

我对更换零件有进一步的疑问,并已更新操作。请帮助。thx.我能问一下,如果提供的代码不起作用,你为什么会接受答案吗?对我来说似乎很奇怪…哦,对不起,之前没有看到你的答案。正如前面所说的,我现在只是通过示例学习谷歌应用程序脚本,我自己无法迈出一小步。我接受了文件夹迭代代码的答案,假设我找到的代码是正确的。越过这一小步,我遇到了一个新问题;var body=doc.getBody();body.findText('searchPattern')您可以使用页眉和页脚而不是body。。。