免责声明 - 这是我第一次的Goolge Apps的剧本,所以我不是100%肯定这是你想要的。
我用DocsList
API列出owner,则editors和在给定的谷歌云端硬盘文件夹每spreadsheet的viewers:
function start() {
var folder = DocsList.getFolderById("...put folder ID here..."),
files = folder.getFilesByType(DocsList.FileType.SPREADSHEET), file = null, spreadsheet = null,
owner = null, editors = null, editor = null, viewers = null, viewer = null,
i = 0, j = 0;
for (i = 0; i < files.length; i += 1) {
file = files[i];
Logger.log("===== Spreadsheet " + (i + 1) + "/" + files.length + ": " + file.getName() + " =====");
spreadsheet = SpreadsheetApp.openById(file.getId());
owner = spreadsheet.getOwner();
Logger.log("- Owner: " + owner.getEmail());
editors = spreadsheet.getEditors();
for (j = 0; j < editors.length; j += 1) {
editor = editors[j];
Logger.log("- Editor " + (j + 1) + "/" + editors.length + ": " + editor.getEmail());
}
viewers = spreadsheet.getViewers();
for (j = 0; j < viewers.length; j += 1) {
viewer = viewers[j];
Logger.log("- Viewer " + (j + 1) + "/" + viewers.length + ": " + viewer.getEmail());
}
}
}
注意观众的列表中包含评论者过,这两个这些API不会分离组。我测试了这个代码,它适用于我。你可以很容易地推广到iterate over every folder。
来源
2014-10-01 08:57:11
kol
谢谢,但如果我有除Spreadsheet以外的文件夹文件,它会引发错误。是否有可能跳过这些文件? – 2014-10-01 13:05:12
在我测试此代码的文件夹中,我有其他类型的文件,我没有得到任何错误。你会得到什么错误信息? 'getFilesByType(DocsList.FileType.SPREADSHEET)'调用应该跳过非电子表格文件。 – kol 2014-10-01 13:24:04
如果Martin无法查看共享权限的文件夹中存在文件,则可能导致错误。您可以在for循环中使用try catch块,并在捕获错误时记录文件名。长期来看,我会建议使用DriveApp而不是DocsList(DocsList较旧,但仍然是实验性的)。 – 2014-10-01 20:38:51