0

エディターを問題なくドキュメントに追加する Google Apps スクリプト コードがいくつかあります。ただし、次のコードを実行すると、一部のエディターが削除され、次のメッセージでエラーが発生することがわかります。

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

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

エディターがファイル自体から取得され、削除に失敗したことを考えると、エラー メッセージが助けを提供しないため、これを進める方法がわかりません。

誰もが同様の経験をしました。これに対して提起された問題は見当たりません。

前もって感謝します。クリス

4

2 に答える 2

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 に答える
0

getViewers または getEditors メソッドからユーザー オブジェクトを取得したにもかかわらず、removeEditor と removeViewer の両方が一部のユーザーに対して失敗する可能性があります。

私の観察では、返されたユーザー オブジェクトが Google アプリ アカウント所有者でない限り、削除アクションは失敗します。

したがって、Google Apps ドメイン example.com では、ファイルが次のメール アドレスと共有される可能性があります。

normal_account@example.com
group_account@example.com
third_party@some_other_example.com

removeEditor/removeViewer は、リストの最初のアドレスに対してのみ成功します。

getEditors/getViewers への呼び出しはユーザー オブジェクトのリストを返しますが、いくつかのオブジェクトは空に見えます。たとえば、user.getEmail() は空の文字列を返します。 apps-script/reference/drive/user#getEmail%28%29メールアドレスが利用できない場合。

于 2013-10-14T07:30:36.203 に答える