0

我有一些谷歌应用程序脚本代码,可以毫无问题地将编辑器添加到文档中。但是,当我运行以下代码时,我发现一些编辑器被删除,并且出现以下消息的一些错误:“异常:我们很抱歉,发生了服务器错误。请稍候,然后重试。”

var file = DocsList.getFileById( fid );
var editors = file.getEditors();

  for ( el = 0; el < editors.length ; el++ ) {
      file.removeEditor( editors[ el ] );
}

鉴于编辑器是从文件本身检索的,然后无法删除,我看不到如何进行此操作,因为错误消息没有提供任何帮助。

有没有人经历过类似的。我看不到对此提出的任何问题。

提前致谢。克里斯

4

2 回答 2

0

我有同样的经历,尽管从 getViewers 或 getEditors 方法获取用户对象,removeEditor 和 removeViewer 都可能对某些用户失败。

我的观察是,除非返回的用户对象是 Google 应用程序帐户持有人,否则删除操作将失败。

因此,在 google 应用程序域 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如果电子邮件地址不可用。

于 2013-10-14T07:30:36.203 回答
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)

      }
      }
}

这当然不会为您的问题带来任何答案,但它可以帮助您更详细地了解正在发生的事情,哪个编辑器出错,哪个没有。

于 2012-08-21T07:53:12.390 回答