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

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

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

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

Q&A

解決済

1回答

2542閲覧

createFileメソッドでドキュメントを作成できるかどうか

退会済みユーザー

退会済みユーザー

総合スコア0

Google Apps Script

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

0グッド

0クリップ

投稿2021/05/17 15:37

編集2021/05/17 15:38

前提・実現したいこと

指定したフォルダの中にGoogleドキュメントを作成したいのですが、簡単に実装する方法を考えていて、
フォルダクラスのcreateFileメソッドで実装可能でしょうか?
ご教示お願い致します。

試したこと

以下のコードで、目的の処理は実装できました。

GAS

1 const folder = DriveApp.getFolderById("フォルダID"); 2 let documentName = "サンプルドキュメント"; 3 let doc = DocumentApp.create(documentName); 4 let file = DriveApp.getFileById(doc.getId()); 5 file.moveTo(folder);

ただ、DocumentAppクラスのcreateメソッドは
引数にドキュメント名を指定する構文しか用意されていないみたいで、
このメソッドで作成すると自動的にGoogleドライブのルートフォルダに作成されてしまいます。
これより、上記のように[ID取得 → ファイル取得 → ファイルを移動]のような手順を踏まないと、
指定したフォルダの中にドキュメントを作成することができなかったので、
もっと簡潔な方法がないかという疑問を持ちました。

フォルダクラスのcreateFileメソッドで実装を試みたのですが、
正しいMimeTypeを指定しているつもりですが、エラーとなってしまいました。
createFileメソッドでは実装できませんか?

GAS

1let body = `本文1行目 2本文2行目` 3 const folder = DriveApp.getFolderById("フォルダID"); 4 folder.createFile("サンプルドキュメント", body, MimeType.GOOGLE_DOCS);
{ [Exception: Invalid argument: file.contentType] name: 'Exception' }

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

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

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

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

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

guest

回答1

0

ベストアンサー

あまり複雑さは変わらないかもしれませんが、一応下記でできると思います。

(※正常に実行するには、「サービス」からDrive APIを有効にしておく必要があります)

function myFunction(){ const doc = Drive.Files.insert({ mimeType: MimeType.GOOGLE_DOCS, title: "サンプルドキュメント", parents: [{id: "フォルダID"}] }); }

投稿2021/05/17 16:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2021/05/18 13:47

ご回答ありがとうございます。 createFileメソッドでは作成できないのですね。 ご教示いただいた方法で、ドキュメントを作成できることを確認いたしました。 ちなみに、この方法で、ドキュメント作成時に本文をセットすることも可能ですか? もしくはconst docで受け取ったdocを使って、どのようにすれば本文を書き込めますか? 以下を試してみましたが、本文は書きこまれませんでした。 let b = `本文1行目 本文2行目`; const doc = Drive.Files.insert({ mimeType: MimeType.GOOGLE_DOCS, title: "サンプルドキュメント", body:b, parents: [{id: "フォルダID"}] }); また、受け取ったdocで、doc.getBody().setText()としようとしたのですが、getBodyの候補が出て来なかったので、この書き方でも不可のようでした。 Drive.FilesのAPIを探したのですが、以下とは違いますか? https://developers.google.com/drive/api/v2/reference/files/insert
退会済みユーザー

退会済みユーザー

2021/05/18 14:30

Drive.FilesのAPIリファレンスはそのURLであっていると思います。 url御記載の通りDrive.filesで本文つきのファイルを作成することはできないようです。
退会済みユーザー

退会済みユーザー

2021/05/18 14:50

ご回答ありがとうございます。 Drive.filesでは、不可とのことで承知しました。 ご教示いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問