質問: tempWESheet.copyTo(duplicatedSS); copiedSheet.setName(year + month + i); } else if (calJa.getEventsForDay(date).length > 0) { return; } else { return; } } } ``` スタンドアロン型です。 main.gsで copyTempleteメソッドを実行してテンプレートは作成されたあと、 createSheetメソッドを実行して複製したテンプレートの中から該当するシートを複製しようとしてます。 繰り返しで恐縮ですが、やりたいことは、 たとえば、「templete」というスプレッドシートを複製して、「202008」というスプレッドシートを作成しようとしてます。 その「202008」というスプレッドシートの中にある、各曜日用のテンプレートのシートを、 曜日に合わせて複製して、「0801」から「0831」まで作成しようとしてます。 問題点と思っている箇所なのですが、 1行目のログがconsole.log(file)の箇所なのですが、 こちらが空のため取得出来ていないのだと思いました。 いろいろと調べてみたのですが、解決策が見つかりませんでした。 申し訳ございませんが、アドバイスなどいただけましたら幸いです。 よろしくお願いいたします。
回答: > > 問題点と思っている箇所なのですが、 > > 1行目のログがconsole.log(file)の箇所なのですが、 > > こちらが空のため取得出来ていないのだと思いました。 > > > ご推察の通り、ファイルが取得できていないです。 原因として考えられるのは、コードを信じるのなら `var duplicatedSS = DriveApp.getFolderById(フォルダ名);` ここはフォルダIDですね。アウトプット先のフォルダIDを指定しないといけません。 もうひとつは `var file = duplicatedSS.getFilesByName(ファイル名);` ここのファイル名、間違っていませんか。 `copyTemplete()`を実行して、スプレッドシートが作成されているのが確認できてから、`createSheet()`を実行して同じエラーがでるのなら、原因は上記ぐらいしかないのかな、と思います。 追記1 === ``` function createSheet() { var year = getMakingYear(); var month = getMakingMonth(); var duplicatedSS = DriveApp.getFolderById(フォルダID); const files = duplicatedSS.getFiles(); while(files.hasNext()) { const file = files.next(); console.log(file.getName()); } var file = duplicatedSS.getFilesByName('業務管理シート_' + year + month); console.log(file); // 以下略 } ```