找到&使用Google Apps脚本替换文件夹中的文件

时间:2013-12-11 04:09:07

标签: replace google-apps-script find directory google-docs

你能发布一个确实找到&的片段吗?请替换文件夹中的所有文件?

我找到了类似的东西, 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

1 个答案:

答案 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(即你可以在那里有一个带有特定名称的空文件)