
実現したいこと
htmlのinputタグ(type="file")でPDFをアップロードしてGASに送って、Googleドライブに保存したいのですが、実際にドライブに保存されたPDFには、以下の文章が記載されたものが保存されており、適切でありませんでした。わかる方がいらっしゃたら教えていただきたいです。
発生している問題・エラーメッセージ![イメージ説明]
実際にPDFファイルとして保存されてたもの⇩
(https://ddjkaamml8q8x.cloudfront.net/questions/2023-12-17/89e67127-5c69-47b2-aaee-5fafea843ec3.png)
該当のソースコード
html
1 <div class="input"> 2 <form action="https://script.google.com/macros/s/AKfycbw6csvxkY10UG5D_eNNPSsqTI0sxhm5qkhBHSRrS_nM4wKfrd1cFUs1Sp0Q4L1AXCbwQg/exec" method="POST"> 3 4 <!--ほかの質問は略--> 5 6 <div style="height: 20px;"></div> 7 <!--No.3--> 8 <legend style="text-align: start;">身分証明書の提出(提出可能書類から1点)*<br>提出可能書類(運転免許証, 運転経歴証明書, パスポート, マイナンバーカード, 在留カード・特別永住者証明書, 官公庁化顔写真を貼付した各種福祉手帳(障がい者手帳など), 各種健康保険証, 顔写真が貼付されていない各種福祉手帳(母子健康手帳など), 住民票の写し・住民票の記載事項証明書, 印鑑登録証明書)</legend> 9 <input type="file" name="fileUpload" accept=".pdf" /> 10 11 <div style="height: 20px;"></div> 12 <div style="width: 100%;text-align: center;"><input id="playButton" class="btn" type="submit" value="送信"></div> 13 </form> 14 <audio id="Audio" src="btn.mp3"></audio> 15 <iframe name="audioFrame" style="display:none;"></iframe> 16 </div> 17 18 <script> 19 var audio = document.getElementById("Audio"); 20 var playButton = document.getElementById("playButton"); 21 22 playButton.addEventListener('click', function() { 23 audio.play(); 24 alert("コメントを送信しました。"); 25 }); 26 </script> 27
GAS
1// フォルダ内で使用可能なファイル名を取得する関数 2function getNextAvailableFileName(folder) { 3 var fileNameBase = "file"; 4 var fileExtension = ".pdf"; 5 var counter = 1; 6 7 // フォルダ内のファイルを取得 8 var files = folder.getFiles(); 9 10 // 連番のファイル名が存在するか確認 11 while (files.hasNext()) { 12 var file = files.next(); 13 var existingFileName = file.getName(); 14 var expectedFileName = fileNameBase + counter + fileExtension; 15 16 // 連番が存在する場合、カウンターを増やして再試行 17 if (existingFileName === expectedFileName) { 18 counter++; 19 } else { 20 // 連番が存在しない場合、そのファイル名を使用 21 return expectedFileName; 22 } 23 } 24 25 // すべての連番が使用されている場合、最後の連番を使用 26 return fileNameBase + counter + fileExtension; 27} 28 29// 5桁の乱数を生成して、重複がないか確認する関数 30function generateUniqueRandomNumber(existingNumbers) { 31 var newNumber; 32 do { 33 newNumber = Math.floor(10000 + Math.random() * 90000); 34 } while (existingNumbers.indexOf(newNumber) !== -1); 35 return newNumber; 36} 37 38function sendMail(emailAdress,name,birthday,sex, pdfId) { 39 if(sex=="male"){var Sex = "男性"}else {var Sex = "女性"} 40 const recipient = 'sumaishare@gmail.com'; //送信先のメールアドレス 41 const subject = '身分証確認用メール'; //件名 42 const recipientName = name; //送信先の担当者名 43 const body = `☆新規ユーザー☆\n氏名:${recipientName}\n生年月日:${birthday}\n性別:${Sex}\nemail:${emailAdress}\n` 44 + '\n\n*身分確認後は許諾用URLより手続きを行ってください。*\n'; 45 //本文 46 47 //添付ファイルの取得 48 let attachmentFile = DriveApp.getFileById(pdfId).getBlob(); 49 50 let options = { 51 attachments :attachmentFile, 52 name: 'メール担当 ○○' 53 }; 54 GmailApp.sendEmail(recipient, subject, body, options); 55} 56 57function doPost(e) { 58 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 59 ss1 = new Ssheet(ssID1); 60 61 62 var columnIndex = 2; // 例としてA列を指定 63 var data = sheet.getRange(1, columnIndex, sheet.getLastRow(), 2).getValues(); 64 var rowData = []; 65 rowData.push(new Date()); 66 // 5桁の乱数を生成してセルに代入 67 var randomNumber=0; 68 for (var i = 0; i < data.length; i++) { 69 randomNumber = generateUniqueRandomNumber(data); 70 } 71 72//ほかの質問のセル追加は略 73 74 var blob = Utilities.newBlob(e.postData.getDataAsString(), e.postData.getContentType(), e.parameter.fileUpload); 75 // ファイルを保存するGoogle Driveのフォルダ 76 var folder = DriveApp.getFolderById("1hKsF5Z-nFhq0bQk6PTZxStaAfk4yFmRY"); 77 78 // フォルダ内で使用可能なファイル名を取得 79 var fileName = getNextAvailableFileName(folder); 80 81 // ファイル名を指定してファイルを保存 82 var file = folder.createFile(blob.setName(fileName)); 83 84 // 保存したファイルのURLを取得 85 var fileUrl = file.getUrl(); 86 var fileId = file.getId(); 87 rowData.push(fileUrl); 88 rowData.push(e.parameter.other); 89 sendMail(e.parameter.email,e.parameter.name,e.parameter.birthday,e.parameter.contact3, fileId); 90 91 92 sheet.appendRow(rowData); 93 return 0; 94 95 96 97}