2017-09-03 16 views
-1

Googleドライブのフォルダ/ファイルを「A」に共有しています。appsスクリプトGoogleドライブの自動削除エディタ

今、私は 'A'との共有をやめようとしています。

appsスクリプトを使用してすべてのフォルダ/ファイルの共有を停止しようとしましたが、アプリスクリプトが5分間以上実行できませんでした。

apps scriptもっと良い解決策はありますか?

+1

DriveApp.searchFiles(searchParams)を使用してファイルのFileIteratorを取得したら、ここで説明したソリューションを使用して、5分間の実行割り当てを達成できます。https://stackoverflow.com/questions/45985025/optimizing-google-sheets -appendrow/45987178#45987178 –

答えて

0

のファイル数が多いを繰り返しているため、5分を超えていますか?

ちなみに、これは私のの個人的な経験であるから来ているものですが、それは本当ではないかもしれませんが、FileIteratorsを避けることはスピードを上げる傾向があります。また、適切なものを直接検索する代わりにDriveApp.getFiles()を使用して繰り返している場合は、ドライブにあるすべてのファイルを繰り返し処理しています。

アドバンスドAPIを使用すると、ユーザーAが変更/読み取りできるファイルを反復することができます(また、5分後に機能を再実行すると、既に変更したファイル/フォルダはクエリによって考慮されない)。

ファイルリストは、(:ユーザーAはメールアドレス[email protected]を持っているという仮説):によって得ることができる

var files = Drive.Files.list({ 
    q: '"[email protected]" in readers or "[email protected]" in writers' 
}); 


files.items.forEach(file => { 
    var file_app = DriveApp.getFileById(file.id); 
    // Do here what you need to stop sharing. 
}); 

リストは、ファイルとフォルダの両方を取得します。これは、file.mimeTypeというプロパティ(フォルダの場合はapplication/vnd.google-apps.folder、実際のMIMEタイプの場合はapplication/pdf、PDFの場合は)を使用して確認できます。

免責事項:あなたはに持ってAppScriptとGoogleコンソールの両方で高度なAPIを有効にします。簡単ですが、丁寧にお読みくださいthe instructions

テスト:私の同僚と共有しているファイルに対してこの解決策をテストしました。私たちは10000以上のファイルを持つ共有フォルダを持っており、制限に達することなくすべてのファイルを繰り返し処理できます。 DriveAppコールバックが上限に達しました。しかし、再び、これは個人的なテストです。注意を払ってください。

+0

本当にあなたの答えに感謝します。もう1つ質問があります。 5分の実行時間は "アプリスクリプト"の実行時間ですか? 「Googleサービスに接続する時間」ですか? – Nocome

+0

私は両方の合計と思う... –

関連する問題