質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1149閲覧

[GoogleAppsScript]マイドライブ配下の検索したい

tornade999

総合スコア13

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2018/10/08 11:18

編集2018/10/09 03:37

前提・実現したいこと

GASを使って、マイドライブ配下のフォルダ・ファイルの検索を実施したいと思っています。
「配下」とは直下ではなく、マイドライブの下全てです。

発生している問題・エラーメッセージ

DriveAppsクラスのsearchFoldersseachFilesはすべてを対象にしてしまうと思います。(共有アイテムやチームドライブを対象にしたくないのです。)

かといって、FolderクラスのsearchFoldersseachFilesは直下しか検索対象になりません。

補足情報

GoogleDriveで検索するときはマイドライブ配下を検索できるので、できることはできると思っていまして、APIの使い方次第じゃないかと思っているんですが。。
イメージ説明

どなたかご存じないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2018/10/09 03:15

問題点を明確化するために、質問文に追記していただきたい点があります。「発生している問題・エラーメッセージ」の1行目の「すべてを対象にしてしまう」の意味は、"共有アイテム"や"チームドライブ"(もしあれば)を対象にするから好ましくない、という意味で良いでしょうか?
tornade999

2018/10/09 03:36

ご指摘ありがとうございます。はい、そのとおりです。
guest

回答1

0

ベストアンサー

Google ドライブの使い方によると、マイドライブとは

  • 自分がアップロードまたは同期したファイルやフォルダ。
  • 自分が作成した Google ドキュメント、スプレッドシート、スライド、フォーム。

のことのようですので、searchFiles のパラメータで所有者(owners)に自分自身を含むもの、として指定すればよいのではないでしょうか。

https://developers.google.com/drive/api/v3/search-parameters

投稿2018/10/08 11:45

hotta

総合スコア1613

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tornade999

2018/10/08 23:31

hotta様 ご回答ありがとうございます。 ①DriveAppsクラスのsearchFoldersやseachFilesで「"'me' in owners"」で指定すると、ドライブのすべて(マイドライブに追加されていない共有アイテムのファイル)の自身がオーナーのフォルダ・ファイルが取れてしまうのです。 ②FolderクラスのsearchFoldersやseachFilesで「"'me' in owners"」で指定すると、直下の自身がオーナーのフォルダ・ファイルのみ取れてしまうのです。 マイドライブ配下のすべてのもの、が検索できればいいのですが・・・。
papinianus

2018/10/09 08:40

横から失礼。少々検証してみました。 sharedWithMeのパラメータが特殊で実際問題否定を受け付けてくれそうにないです searchFiles("sharedWithMe")しか動作しません。←これは質問者さんの意図と逆 (sharedWithMe = falseや!sharedWithMe、not sharedWithMeといったものが全て無効な引数となりました) searchFiles("my-driveのid" in parents)という方法だと直下しかターゲットになりません(collectionとinなのに!)→仕様に明記されています(https://developers.google.com/drive/api/v3/search-parameters#operators)し、実際そうでした。 folderiteratorを順次処理していくか、getFiles()で全部とってから、File.getParents()してmy-driveにいるものを除外するかしかやりようがなさそうです。
tornade999

2018/10/09 23:40

hotta様 papinianus様 ご返信いただきありがとうございます。 hotta様のコメントにあったsharedWithMeの否定を私も色々と試してはいたのですが、まさにpapinianus様にコメントいただいているように、できないんじゃないかと行きついていたところです・・。 >folderiteratorを順次処理していくか、getFiles()で全部とってから、File.getParents()して >my-driveにいるものを除外するかしかやりようがなさそうです。 やはりそうですよね・・。 GoogleDriveの自身がオーナーの共有アイテムが多数ある場合、iteratorを回している間にGASがタイムオーバーで止まってしまうので・・・。 途中経過を覚えれるようにして回避しようと思います! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問