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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google ドライブ

Google ドライブは、Google社が提供するオンラインストレージサービス。オンラインストレージ上に、画像や動画、テキスト、Word/PDFのファイルなどさまざまなファイル保存することができます。また、他のユーザーと共有することも可能です。

Google Apps Script

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

JavaScript

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

Q&A

1回答

708閲覧

【GAS】ファルダがない場合はフォルダを作成してファイルを保存

ruallout

総合スコア20

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google ドライブ

Google ドライブは、Google社が提供するオンラインストレージサービス。オンラインストレージ上に、画像や動画、テキスト、Word/PDFのファイルなどさまざまなファイル保存することができます。また、他のユーザーと共有することも可能です。

Google Apps Script

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

JavaScript

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

1グッド

1クリップ

投稿2022/10/11 06:13

前提

googleドライブの共有フォルダへ資料を格納する際、
ファルダがない場合はフォルダを作成してファイルを保存する。というFunctionをつくっています。
真似て作った部分が多いので修正箇所がわからず行き詰っています。

下記のエラーが出てしまいます。
27行:Exception: Cannot retrieve the next object: iterator has reached the end.

これ以降、全く進みません。
修正、完成できる方がおられましたらご教授の程何卒お願いいたします。

実現したいこと

F2のセルからファルダ名を取得する。

フォルダがあればB4のファイル名でドライブへアップロード、エクセルへ変換
⇓or
フォルダがなければF2(フォルダ名)でフォルダをつくり、そこへB4(ファイル名)のファイル名でファイルをアップロード、エクセルへ変換

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

Exception: Cannot retrieve the next object: iterator has reached the end.

該当のソースコード

google

1 2function fileupload1() { 3 4 var ss = SpreadsheetApp.getActiveSpreadsheet(); 5 var sheet = ss.getActiveSheet(); 6 var name = sheet.getRange('B4').getValue(); 7 const xlsxName = name; 8 9 const sheetID = "xxxxxxxxxxxxxxxxxxxxxx"; 10 11 var id = "xxxxxxxxxxxxxxxxxxxxxx"; //フォルダID 12 13 var ss = SpreadsheetApp.getActiveSpreadsheet(); 14 var sheet = ss.getActiveSheet(); 15 var month = sheet.getRange('F2').getValue(); 16 const targetFolderName = month; 17 18 const folderIterator =DriveApp.getRootFolder().getFoldersByName(targetFolderName); 19 let targetFolder; 20 if (folderIterator.hasNext()) { 21 // 存在する場合 22 targetFolder = folderIterator.next(); 23 24 } else { 25 // 存在しない場合 26 targetFolder = DriveApp.getRootFolder().createFolder(targetFolderName); 27 } 28 var folder = folderIterator.next(); 29 var folderID = folder.getId(); // ファイルID(); 30 31 // スプレッドシートをExcel形式で取得 32 const xlsxFile = excelExport(sheetID, xlsxName); 33 34 // ↓アップロード先にアップロード 35 gdriveUpload(folderID, xlsxFile); 36 37} 38 39//スプレッドシートをexcelに変換して返す 40function excelExport(sheetID, fileName){ 41 // --> エクセルファイル 42 // sheetID:スプレッドシートのID 43 // xlsxName:保存したいファイル名 44 let today = Utilities.formatDate(new Date(),"JST","MMdd");//今日の日付を取得MM-dd方式 45 let xlsxName = `${fileName}${today}.xlsx`; 46 let options = { 47 method: 'get', 48 headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()}, 49 muteHttpExceptions: true 50 }; 51 //スプレッドシートの内容をエクセル変換 52 let fetchUrl = `https://docs.google.com/feeds/download/spreadsheets/Export?key=${sheetID}&exportFormat=xlsx`; 53 let xlsxFile = UrlFetchApp.fetch(fetchUrl,options).getBlob().setName(xlsxName); 54 return xlsxFile 55} 56 57// Googleドライブにアップロードする 58function lgdriveUpoad(folderID, uploadFile){ 59 let folder = DriveApp.getFolderById(folderID); 60 let drive_file = folder.createFile(uploadFile); 61 return drive_file; 62 }``` 63 64
Cocode👏を押しています

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

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

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

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

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

YAmaGNZ

2022/10/11 06:24

var folder = folderIterator.next(); これは何をしていますか?
YAmaGNZ

2022/10/11 06:51

エラーメッセージは読んでいますか? 訳:次のオブジェクトを取得できません: イテレータが最後に達しました。
guest

回答1

0

diff

1-- var folder = folderIterator.next(); 2-- var folderID = folder.getId(); // ファイルID(); 3++ var folderID = targetFolder.getId(); // ファイルID();

これでだめですかね?

投稿2022/10/14 05:32

macaron_xxx

総合スコア3191

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問