前提
プログラム経験3ヶ月目の初心者エンジニアです。
GoogleスプレッドシートのGASでエラーが起きたが
なにがエラーを起こしてるのか皆目検討がつきません。
実現したいこと
- シートに連携したGoogleフォームに回答があればテンプレをもとにシートを新規作成
- 新規作成したシートにフォームの回答内容に応じて行を追加
発生している問題・エラーメッセージ
TypeError: currentScheduleSheet.insertRows is not a function autoCreateSheet @ コード.gs:80
該当のソースコード
JavaScript
1function autoCreateSheet(){ 2 3 // アンケート結果シートを取得 4 var questionSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("アンケート結果"); 5 6 // 最新の入力行を取得 7 var lastRowNumber = questionSheet.getLastRow(); 8 9 10 11 12 // 1.年間計画表を自動作成 13 14 // 1-1.年間計画表のテンプレートを取得 15 var templateScheduleSheet = DriveApp.getFileById('16VIU26jof49hoiJ6HS27OVsg06tz17kFNzEWnsGgY0w'); //※コピーしてアカウントが変わる場合は変更 16 17 18 // 1-2.生徒氏名を取得 19 const studentNameCellNumber = 2; //アンケート結果シート配置替えで要変更 20 var studentName = questionSheet.getRange(lastRowNumber,studentNameCellNumber).getValue(); 21 22 23 // 1-3.年間計画表フォルダ作成 24 var newFolder = DriveApp.createFolder(studentName); 25 26 27 // 1-4.ファイル名とフォルダIDを取得 28 var newScheduleSheetName = '年間計画表' + studentName + 'さん'; 29 var scheduleFolderId = DriveApp.getFolderById('1l_2mihnbveca7sDBCO4ium4JRnlT97hy'); //※コピーしてアカウントが変わる場合は変更 30 31 32 // 1-5.年間計画表を新規作成 33 var newScheduleSheet = templateScheduleSheet.makeCopy(newScheduleSheetName,scheduleFolderId); 34 35 36 // 1-6.年間計画表に生徒氏名を自動入力 37 var newScheduleSheetId = newScheduleSheet.getId(); 38 var currentScheduleSheet = SpreadsheetApp.openById(newScheduleSheetId); //新規作成したシートにアクセス 39 currentScheduleSheet.getRange("B11:O11").setValue(studentName + "さん"); 40 41 42 // 1-7.志望校・志望学部を自動入力 43 const preferredSchoolCellNumber = 5; //アンケート結果シート配置替えで要変更 44 const preferredFacultyCellNumber = 6; //アンケート結果シート配置替えで要変更 45 var preferredSchool = questionSheet.getRange(lastRowNumber,preferredSchoolCellNumber).getValue(); 46 var preferredFaculty = questionSheet.getRange(lastRowNumber,preferredFacultyCellNumber).getValue(); 47 currentScheduleSheet.getRange("B12:O12").setValue("志望校:" + preferredSchool + " " + preferredFaculty); 48 49 50 // 1-8.科目を計画表に自動入力 51 52 // 科目のセル取得 53 const subjectCellNumber = 9; 54 var subjectCell = questionSheet.getRange(lastRowNumber,subjectCellNumber).getValue(); 55 56 // 条件分岐で科目表示 57 58 var currentLastRow = 14; // 科目セルの1つ下の行 59 const subjectColumnNumber = 2; //科目列 60 const majorColumnNumber = 3; //単元列 61 62 // 英語 63 if (subjectCell.includes("英語")){ 64 const numberOfMajorEnglish = 4; //単元数 65 currentScheduleSheet.insertRows(currentLastRow,numberOfMajorEnglish); //行を挿入 66 // 科目追加 67 currentScheduleSheet.getRange(currentLastRow,subjectColumnNumber,numberOfMajorEnglish).setValue("英語").setBackgroundRGB(56,185,255).merge(); 68 69 //単元追加 70 currentScheduleSheet.getRange(currentLastRow,majorColumnNumber).setValue("単語"); 71 currentScheduleSheet.getRange(currentLastRow + 1,majorColumnNumber).setValue("文法"); 72 currentScheduleSheet.getRange(currentLastRow + 2,majorColumnNumber).setValue("解釈"); 73 currentScheduleSheet.getRange(currentLastRow + 3,majorColumnNumber).setValue("長文読解"); 74 currentLastRow += numberOfMajorEnglish; //最終行を更新 75 } 76 77 // 現代文 78 if (subjectCell.includes("現代文")){ 79 const numberOfMajorJapanese = 2; //単元数 80 currentScheduleSheet.insertRows(currentLastRow,numberOfMajorJapanese); //行を挿入 81 // 科目追加 82 currentScheduleSheet.getRange(currentLastRow,subjectColumnNumber,numberOfMajorJapanese).setValue("現代文").setBackgroundRGB(255,66,0).merge(); 83 84 //単元追加 85 currentScheduleSheet.getRange(currentLastRow,majorColumnNumber).setValue("背景知識"); 86 currentScheduleSheet.getRange(currentLastRow + 1,majorColumnNumber).setValue("読解"); 87 currentLastRow += numberOfMajorJapanese; //最終行を更新 88 } 89 90 // 古文 91 if (subjectCell.includes("古文")){ 92 const numberOfMajorClassic = 4; //単元数 93 currentScheduleSheet.insertRows(currentLastRow,numberOfMajorClassic); //行を挿入 94 // 科目追加 95 currentScheduleSheet.getRange(currentLastRow,subjectColumnNumber,numberOfMajorClassic).setValue("古文").setBackgroundRGB(195,66,0).merge(); 96 97 //単元追加 98 currentScheduleSheet.getRange(currentLastRow,majorColumnNumber).setValue("単語"); 99 currentScheduleSheet.getRange(currentLastRow + 1,majorColumnNumber).setValue("文法"); 100 currentScheduleSheet.getRange(currentLastRow + 2,majorColumnNumber).setValue("解釈"); 101 currentScheduleSheet.getRange(currentLastRow + 3,majorColumnNumber).setValue("長文読解"); 102 currentLastRow += numberOfMajorClassic; //最終行を更新 103 } 104 105 // 漢文 106 if (subjectCell.includes("漢文")){ 107 const numberOfMajorChinese = 2; //単元数 108 currentScheduleSheet.insertRows(currentLastRow,numberOfMajorChinese); //行を挿入 109 // 科目追加 110 currentScheduleSheet.getRange(currentLastRow,subjectColumnNumber,numberOfMajorChinese).setValue("漢文").setBackgroundRGB(215,65,39).merge(); 111 112 //単元追加 113 currentScheduleSheet.getRange(currentLastRow,majorColumnNumber).setValue("文法"); 114 currentScheduleSheet.getRange(currentLastRow + 1,majorColumnNumber).setValue("長文読解"); 115 currentLastRow += numberOfMajorChinese; //最終行を更新 116 } 117 118}
試したこと
- スペルミスチェック
- 該当エラー箇所をコメントアウトして正常に動くか確認(エラーは起きなかった)
- insertRowsの引数の型に誤りがないか確認
- Google検索やchatGPTを用いて原因を探るも特定できず
- 変数の宣言で";"の書き忘れなどがないか確認
補足情報(FW/ツールのバージョンなど)
15行と29行のIDの部分は機密情報なのでふせさせていただきました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。