如何解决在共享驱动器中查找和替换多个文档功能 代码说明注意参考
问题:我在多个共享驱动器中有多个文档(特别是Google表格),需要替换相同的单个单词。在该论坛上进行了一些搜索,发现我下面的代码,但似乎不起作用。我没有收到任何错误消息,但是当我检查文件时,没有任何改变。我检查并确保正确输入了搜索字符串和替换字符串。
我需要做其他事情来检查共享驱动器中的文件吗?我尝试在高级Google服务中打开Drive API,但这只是在第6行给了我一个错误( var doc = DocumentApp.openById(file.getId()); )
这是我使用的代码:
function myFunction() {
var files = DriveApp.getFiles(); // Note: this gets *every* file in your Google Drive
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.getFiles()
仅返回“我的云端硬盘”上的文件。为了能够在共享驱动器(以前称为Team Drive)中获取文件,您必须启用Drive Advanced Service,而不是
var files = DriveApp.getFiles();
使用类似
var files = Drive.Files.list(options);
相关
- Finding shared date of a file in GAS
- Google Apps Script TeamDrive DriveApp.searchFolders and DriveApp.searchFiles does not return any results
- "Shared Drive" support in Google Apps Script
要访问共享驱动器,您需要在高级Google服务中激活Drive API,但是要访问它,则必须使用Drive
而不是DriveApp
。 / p>
如果要专门检索共享驱动器并查找具有特定名称的文件,可以尝试以下操作:
代码
// Copyright 2020 Google LLC.
// SPDX-License-Identifier: Apache-2.0
function retrieveFiles() {
var allDrives = Drive.Drives.list().items;
let fileName = 'FILE_NAME';
for (let i = 0; i < allDrives.length; i++) {
var driveId = allDrives[i].id;
console.log(id)
var optionalArgs = {
'driveId': driveId,'includeItemsFromAllDrives': true,'corpora': 'drive','supportsAllDrives': true,'q': "title=" + "'" + fileName + "'"
};
var filesReturned = Drive.Files.list(optionalArgs).items;
for (let j = 0; j < filesReturned.length; j++) {
var fileId = filesReturned[j].id;
var sheet = SpreadsheetApp.openById(fileId);
//sheet manipulation
}
}
}
说明
以上代码通过使用Drives:list
方法检索所有共享驱动器,然后对于每个共享驱动器,使用Files:list
搜索所有名为FILE_NAME
的文件。然后,它使用SpreadsheetApp
访问每个文件。
注意
请记住,可以对代码进行自定义以满足您的特定需求。
参考
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。