前提・実現したいこと
Webフォームで入力した内容をスプレッドシートに反映し、そのシートをExcelに変換してメールに添付して送信するスクリプトを作成しています。
発生している問題・エラーメッセージ
フォームでの入力内容はテンプレートとなるスプレッドシートをコピーしたファイルに入力していますが、メールの送信先で添付ファイルを見ると入力内容が反映されていません。 実際にコピーして生成されたファイルには値が入力されており、また下記ソースコードの「//エクスポート用のURL生成」部分で生成されたURLを直接ブラウザに入力すると値が入力されているファイルがダウンロードできます。 添付されたファイルと実際のファイルでこのような乖離が発生してしまう原因はどういったことが考えられますでしょうか?
該当のソースコード
GoogleAppsScript
1function doPost(e){ 2 3 // 書き込み対象ファイルのID取得 4 var fileID = editExcel(e.parameters); 5 6 // 書き込み対象ファイルのコピーおよび記入 7 var copiedFileId = sheetCopy(e.parameters,fileID); 8 9 //添付するExcelファイルの名称 10 var xlsxName = LEAD_FILENAME + e.parameters.fromDep + "_" + e.parameters.fromName + "_" + Utilities.formatDate(new Date, "Asia/Tokyo", "yyyyMMdd") + END_FILENAME 11 12 //エクスポート用のURL生成 13 var fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + copiedFileId + "&exportFormat=xlsx"; 14 15 //OAuth2対応 16 var fetchOpt = { 17 "headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() }, 18 "muteHttpExceptions" : true 19 }; 20 21 //URLをダウンロード 22 var xlsxFile = UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName) 23 24 // メールフォーマットの作成 25 var m = createMailFormat(e.parameters,fetchUrl); 26 27 // メール送信 28 MailApp.sendEmail("" + m.recipient + "", m.subject, m.body,{cc:"" + e.parameters.fromAdd + "",replyTo:"" + e.parameters.fromAdd + "",attachments:[xlsxFile]}); 29 30 // 結果ページへの遷移 31 var resultpage=HtmlService.createTemplateFromFile("result"); 32 return resultpage.evaluate(); 33 34} 35 36 37function sheetCopy(param,fileId) { 38 var templateFile = DriveApp.getFileById(fileId); 39 var OutputFolder = DriveApp.getFolderById(COPY_DRIVE_ID); 40 var OutputFileName = templateFile.getName().replace('dep_name_yyyymmdd_nn','') + param.fromDep + '_' + param.fromName + '_' + Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyyMMddhhss'); 41 42 var CopiedFile = templateFile.makeCopy(OutputFileName, OutputFolder); 43 44 var CopiedFileId = CopiedFile.getId(); 45 46 var sh1 = SpreadsheetApp.openById(CopiedFileId); 47 var sheet1 = sh1.getSheetByName('Card') 48 49 // 受信者情報の入力 50 sheet1.getRange(16,9).setValue(param.toCom); 51 sheet1.getRange(16,12).setValue(param.toDep); 52 sheet1.getRange(17,9).setValue(param.toName); 53 sheet1.getRange(18,9).setValue(param.toAdd); 54 55 // 送信者情報の入力 56 sheet1.getRange(20,9).setValue(param.fromCom); 57 sheet1.getRange(20,12).setValue(param.fromDep); 58 sheet1.getRange(21,9).setValue(param.fromName); 59 60 // 送信日の入力 61 sheet1.getRange(23,9).setValue(Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd")); 62 63 // メッセージの入力 64 sheet1.getRange(26,3).setValue(param.message); 65 66 return(CopiedFileId); 67} 68
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/28 01:22