我有一些谷歌应用程序脚本代码,可以将编辑器添加到文档中,没有任何问题。但是,当我运行以下代码时,我发现某些编辑器被删除,并且出现以下消息时出现一些错误:“异常:我们很抱歉,发生了服务器错误。请稍等一下再试一次。”
var file = DocsList.getFileById( fid );
var editors = file.getEditors();
for ( el = 0; el < editors.length ; el++ ) {
file.removeEditor( editors[ el ] );
}
鉴于编辑器是从文件本身检索的,然后无法删除,我无法看到如何进行此操作,因为错误消息没有提供任何帮助。
有没有人经历过类似的事情。我看不出任何针对此的问题。
提前致谢。 克里斯
答案 0 :(得分:0)
您可以尝试将file.remove(editors[ el ])
置于try-catch结构中以捕获错误(并查看)并让您的应用在每种情况下完成。
示例:
function myFunction() {
var file = DocsList.getFileById( '0AnqS........bW1DNnVBbVE' );
var editors = file.getEditors();
Logger.log(editors.join())
for ( el = 0; el < editors.length ; el++ ) {
try{
file.removeEditor( editors[ el ] );
Logger.log(editors[el]+' removed');// this editor is successfully removed
} catch(error)
{Logger.log('error on el = '+editors[el]+' = '+error)
}
}
}
这当然没有为您的问题提供答案,但它可以帮助您查看更多细节中发生的事情,哪个编辑器出错,哪个没有。
答案 1 :(得分:0)
我有相同的经验,尽管从getViewers或getEditors方法获取用户对象,但removeEditor和removeViewer都可能因某些用户而失败。
我的观察是,除非返回的用户对象是Google Apps帐户持有者,否则删除操作将失败。
因此,在Google Apps域example.com上,可能会与以下电子邮件地址共享文件:
normal_account@example.com
group_account@example.com
third_party@some_other_example.com
removeEditor / removeViewer只会成功获取列表中的第一个地址。
虽然对getEditors / getViewers的调用返回了一个用户对象列表,但是有些对象显示为空,例如user.getEmail()返回一个空字符串,这就是API文档所说的https://developers.google.com/apps-script/reference/drive/user#getEmail%28%29如果电子邮件地址不可用。