2

さて、私はイントラネット用の Google Apps Script を書いています。Google ドライブのフォルダからファイルのリストを表示できるようにしたいと考えています。ただし、ユーザーがアクセスできるファイルのみを表示したいです。

getViewers文字列のリストを返すメソッド があります。

https://developers.google.com/apps-script/class_file#getViewers

これに関する問題は、アクセス許可リストにある個人の電子メール アドレスを返しますが、グループ名を返すことです。GroupsManagerでグループ オブジェクトを取得する方法がないため、これは理想的とは言えません。グループ ID しか取得できません。

そんな中でもできることがいくつかあります。私が試したことの1つはこれでした:

var files = DocsList.getFolderById('0B_Zfq-SOMETHINGIJUSTMADEUP').getFiles();
for (f = 0; f < files.length; f++){
    var viewers = files[f].getViewers();
    var flag = false;
    // userGroups is the list of group objects, from this session's user
    for (i=0; i < usersGroups.length; i++){
        var groupName = userGroups[i].getName();
        if (viewers.indexOf(groupName) > -1){
            flag = true;
        }
    }
    if (flag){
        // print the link to file within the HTML template
    }
}

しかし、明らかな理由から、ページの読み込みに非常に時間がかかります。5分ほどでロードされます。私が本当に必要としているのは、getViewersメソッドからグループの電子メール アドレスのリストを取得できることです。個々のユーザーのメールを返しますが、グループのグループ名を返すのは本当に奇妙に思えます。誰かがこれに対する解決策または回避策を知っていますか?

4

1 に答える 1

0

おそらく最善の策は、groupIds がグループ名にマップされたキャッシュを使用し、それを GroupManager サービスの代わりに使用することです。そうしないと、スクリプトが実行されるたびに古くなります。イントラネット サイトのドキュメント リストがどの程度「ライブ」であるかによっては、ディレクトリ マップのキャッシュを使用して速度を上げることもできます。

ファイルとディレクトリ リストのアクセス許可が非常に変更可能である場合は、必要に応じて、時間ベースのトリガーで実行されるヘルパー スクリプトによってキャッシュを事前設定することができます。

これは、機能リクエストとしてイシュー トラッカーに追加することをお勧めします。

于 2012-12-30T12:54:37.030 に答える