お世話になっております。IDベースのopenと名前ベースのopenを練習したく、Google Documentを新規作成/または開くgasを組みたいと考えています。
FolderAというフォルダが存在しない場合は新規作成し、その中にDocA、DocBの二つのドキュメントを作成し開きます。すでにFolderAが存在している場合は、その中にすでに格納されているDocA、DocBを開きたいと考えています。
問題1
下のようなgasで実行しても、フォルダの新規作成ができません。原因は変数"folder"にFileIteratorが戻されているからなのですが、fileが存在していないのに戻り値があるのはなぜですか?
問題2
ファイルが作成された状態で実行しても、documentが開かれることなくプログラミングが終了します。名前で検索してゲットしたIDがnext構文内で5つ取得されており、実効トランスクリプト上ではこれら5つをopenしています。(実際にはウィンドウは開かれません。)どこが間違っていますでしょうか…?
どうぞよろしくお願いいたします。
gas
1function CreateDoc() { 2 3 var search = DriveApp.getFoldersByName("FolderA") 4 Logger.log(search) 5 while (search.hasNext() ){ 6 var folder = search.next(); 7 Logger.log(folder) 8 } 9 10 if(folder == ""){ 11 var Fol = DriveApp.createFolder("FolderA"); 12 var FolderID = Fol.getId(); 13 14 var docNameA = "DocA"; 15 var contentsA = "DocA\n\n" 16 17 var docNameB = "DocB"; 18 var contentsB = "DocB\n\n" 19 20 21 var documentA = DocumentApp.create(docNameA); 22 documentA.getBody().setText(contentsA); 23 var documentB = DocumentApp.create(docNameB); 24 documentB.getBody().setText(contentsB); 25 26 // 移動 27 var targetFolder = DriveApp.getFolderById(FolderID); 28 29 var docFileA = DriveApp.getFileById(documentA.getId()); 30 targetFolder.addFile(docFileA); 31 32 var docFileB = DriveApp.getFileById(documentB.getId()); 33 targetFolder.addFile(docFileB); 34 35 DocumentApp.openById(docFileA); 36 DocumentApp.openById(docFileB); 37 38 }else{ 39 var searchA = DriveApp.getFilesByName("DocA") 40 Logger.log(searchA) 41 while (searchA.hasNext() ){ 42 var fileA = searchA.next(); 43 Logger.log(fileA.getId()) 44 DocumentApp.openById(fileA.getId()); 45 } 46 var searchB = DriveApp.getFilesByName("DocB") 47 Logger.log(searchB) 48 while (searchB.hasNext() ){ 49 var fileB = searchB.next(); 50 Logger.log(fileB.getId()) 51 DocumentApp.openById(fileB.getId()); 52 } 53 } 54}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/09 01:42