如何使用通用查找和替换? (ELI5)

时间:2016-09-10 15:17:48

标签: google-apps-script google-drive-api google-docs google-docs-api

我正在处理共享Google云端硬盘文件夹中的项目,我们最近了解到,我们需要更改一些字符串,这些字符串可以在所有文档中找到,但字符串略有不同。有数百个文件,并且不可能一个接一个地浏览它们,经过一番查看后我找到了一个通用查找和替换脚本。

https://ctrlq.org/code/19926-universal-find-replace-in-google-drive

问题是,我对代码几乎没有经验,即使使用网站上给出的说明,我也不知道我对脚本的处理方式。所有这些对我来说都是胡言乱语,如果有人能引导我完成所有这些,我会感到难以置信。

问题:

  1. 我在脚本中指定了相关的云端硬盘文件夹,如何指定它?"文件夹路径"事情让我更加困惑,所以如果你能让我知道我在哪里可以找到所需的信息,那就太棒了。
  2. 我在哪里指定需要替换的字符串?我可以明显地告诉doc.replaceText与它有关,但事实上它说"你可以使用正则表达式" 让我很好奇是否有什么东西否则我需要在此之前改变?
  3. 如何制作脚本代码的副本以及我在Google云端硬盘中放置文件的位置?
  4. 如果还有其他可能忽略的步骤,请同时提及。
  5. 此外,是否可以在单个脚本中替换多个字符串? (即将所有"红色"更改为"蓝色"并将所有"黑色"更改为"白色")

    提前谢谢大家,这可能会成为救星?

1 个答案:

答案 0 :(得分:0)

您可能需要查看Apps脚本Drive ServiceDocument Service,以帮助您更熟悉要使用的类和功能。

云端硬盘服务

  

此服务允许脚本在Google云端硬盘中创建,查找和修改文件和文件夹。

文件服务

  

此服务允许脚本创建,访问和修改Google文档文件。

创建文件夹

使用示例代码:

 // Log the name of every folder in the user's Drive.
 var folders = DriveApp.getFolders();
 while (folders.hasNext()) {
   var folder = folders.next();
   Logger.log(folder.getName());
 }

您可以设置

var newFolder = DriveApp.createFolder('My New Folder');
//To check if you successfully created a folder
Logger.log(newFolder.getId())
//To set sub folder under "My New Folder"
var id = newFolder.getId()
var subFolder = newFolder.createFolder('New Sub Folder')

<强> 2。我在哪里指定需要替换的字符串?我可以明显地告诉doc.replaceText与它有关,但事实上它说'#34;你也可以使用正则表达式&#34;让我感到好奇的是,在此之前我还需要改变什么?

您可以使用findText(searchPattern, from)

  

从给定的搜索结果开始,搜索元素的内容以查找指定的文本模式。

     

不完全支持JavaScript正则表达式功能的子集,例如捕获组和模式修饰符。

     

提供的正则表达式模式独立地匹配当前元素中包含的每个文本块。

第3。我该如何制作脚本代码的副本以及我在Google云端硬盘中放置文件的位置?

您可以使用Apps Script Console创建代码,这些代码会放在您drive folder

最后,这是一个示例代码,它将更改text的颜色:

 var body = DocumentApp.getActiveDocument().getBody();

 // Use editAsText to obtain a single text element containing
 // all the characters in the document.
 var text = body.editAsText();

 // Insert text at the beginning of the document.
 text.insertText(0, 'Inserted text.\n');

 // Insert text at the end of the document.
 text.appendText('\nAppended text.');

 // Make the first half of the document blue.
 text.setForegroundColor(0, text.getText().length / 2, '#00FFFF');

希望它有所帮助!