前提・実現したいこと
Googleドライブにおいて、取得したfileオブジェクトから、そのファイルがGoogleドキュメントかどうかを判定して、
Googleドキュメントだった場合にその中身をテキストとして読み込むにはどういった処理にすればよいでしょうか?
ご教示お願いします。
試したこと
GoogleドキュメントのURLから、Googleドキュメントを取得して中身のテキストを読み込むには、
以下のコードで実装できることは理解できています。
GAS
1const url = 'GoogleドキュメントのURL'; 2const doc = DocumentApp.openByUrl(url); 3console.log(doc.getName()); 4console.log(doc.getBody().getText());
しかし、指定したファイル名からファイルオブジェクトを取得して、
それがGoogleドキュメントかどうかを判定して、中身をテキストとして読み込むにはどのようにすればよいでしょうか?
以下のように実装してみましたが、指定したファイルが単なるテキストファイルの場合、
これで中身のテキストを読み込めることは確認できたのですが、
GAS
1 let file = DriveApp.getFilesByName("test").next(); 2 let content = file.getBlob().getDataAsString("utf-8"); 3 console.log(content);
指定したファイルがGoogleドキュメントだった場合、以下のようなログとなり、正常に読み込めませんでした。
%PDF-1.4 %���� 1 0 obj <</Title <FEFF30C630B930C830C930AD30E530E130F330C8> /Producer (Skia/PDF m92 Google Docs Renderer)>> endobj 3 0 obj <</ca 1 /BM /Normal>> endobj 6 0 obj <</Filter /FlateDecode /Length 326>> stream x����j�0E��~L�dɒaڱ�9#��� �u�s� �e�E��*W�P��˘���}�>#Y@�����{����p`�����xZ���o�b��k����b/�qm���� rb�٪��_un�m��?껍���fC��w;��"�j�h�{�w!���w�8AˡJ�b����^��
ファイルオブジェクトのリファレンスを見ても、
特にGoogleドキュメントとして読み込むようなメソッドが見つからなかったです。
また、指定したファイルがGoogleドキュメントかどうかを判定する方法についてですが、
以下のようなメソッドを試したところ、Googleドキュメントの場合でも何故かfalseが返ってきてしまいました。
また、Googleスプレッドシートでも同様にfalseが返ってきてしまいました。
GAS
1 let file = DriveApp.getFilesByName("test").next(); 2 console.log(file.getBlob().isGoogleType());
リファレンスは以下のように書かれていました。
isGoogleType() Returns whether this blob is a Google Workspace file (Sheets, Docs, etc.). Return Boolean — true if this blob is a Google Workspace file; false if not.
やりたいこととしては、ファイル名を指定してファイルオブジェクトを取得し、そのテキストを読み込むことなのですが、
読み込みたい対象のファイルは、テキストファイル、もしくはGoogleドキュメントにしたいので、
ファイルオブジェクトを取得した後、Googleドキュメントかどうかを判別して、読み込む処理を分けたいと考えています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/05/16 07:19