1

このコード行をGoogleAppsScriptで使用する場合

  var user = folders[n].getOwner().getEmail()

そのようなアクションを実行する権限がないというエラーが表示されます(バージョンは異なる場合があります。イタリア語から翻訳しています)。

何が得られますか?フォルダの所有者などの情報を取得しているだけです。


スクリプトが私が所有するフォルダを処理するとき、エラーは発生しません。私のものではないフォルダに遭遇したときにエラーが発生します。問題は、このコード行は、私のものではないフォルダーを見つけるためだけのものであり、のようなエラーを正しく発生させるメソッドの発行を回避するためのものsetTrashedです。スクリプトは空のフォルダを探して削除しますが、もちろん所有者ではないフォルダを削除することはできません。はい、私はビジネス向けのGoogleアプリに夢中ですが、何か違いはありますか?

4

1 に答える 1

3

についての具体的な警告はありませんfile.getOwner().getEmail()が、クラスセッションについてはあります。

制限付き特権の実行(onOpenまたはonEditへの応答など)では、ユーザーとスクリプト所有者の両方が同じドメインの一部である場合にのみ、アクティブなユーザーのIDを返します。これは、電子メールアドレスを公開したくない消費者ユーザーのプライバシーを保護するためです。

消費者アカウントではこれに問題はありません。

次の関数は、前の質問で投稿した要点からの抜粋です。呼び出しを.getEmail()(または必要getUserLoginId()に応じて)try ... catchブロックでラップするため、Appsドメインを通過するユーザーのエラーを回避できます。

function getFileInfo (file,fileType) {
  var fileInfo = {
    id: file.getId(),
    name: file.getName(), 
    size: file.getSize(),
    type: (fileType == "file") ? docTypeToText_(file.getFileType()) : "folder",
    created: file.getDateCreated(),
    description: file.getDescription(),
    owner: file.getOwner()
  }
  try {
    fileInfo.owner = file.getOwner().getEmail()//.getUserLoginId()
  } catch(e)
  {
    // Possible permission problem
    fileInfo.owner = "unknown";
  }
  return fileInfo;
}

更新:これが最初に投稿されてから、何かが変更されました。getOwner()これで、別のアカウントから共有されているファイルにアクセスしようとすると、コンシューマーアカウントで前述のエラーが発生します。(2013年3月3日)

于 2013-01-31T12:33:03.923 に答える