I have an html form in local folder and have to submit the data to a google sheet and upload files to google drive. I created google app script and saving data to google sheet correctly, but only one file is uploaded to google drive, I have two input file fields such as photo and cv. How can I upload the second file to google drive?
My html side:
<form id="form" >
<input id="Email" name="Email" type="email" placeholder="Email" required>
<input type="file" id="inputField1" name="CV">
<input type="file" id="inputField2" name="Photo">
<input id="submit" type="submit" />
</form>
<script>
const form = document.getElementById("form");
form.addEventListener("submit", (e) => {
e.preventDefault();
const file1 = form.CV.files[0];
const file2 = form.Photo.files[0];
const fr = new FileReader();
fr.readAsArrayBuffer(file);
fr.onload = (f) => {
const url = "https://script.google.com/macros/s/AKfycbxOs0StixeHX-bl37dpZAVA2n1UD6iFNFiqPic38mR6Ikw8IbQ806A85ttMxcZoVV8/exec";
const qs = new URLSearchParams({
filename: file.name,
mimeType: file.type,
});
fetch(`${url}?${qs}`, {
method: "POST",
body: JSON.stringify({file: [...new Int8Array(f.target.result)], Name: document.getElementById("Name").value, Email: document.getElementById("Email").value, CV: document.getElementById("CV").value, Photo: document.getElementById("Photo").value}),
})
.then((res) => res.json())
.then(console.log)
.catch(console.log);
};
});
</script>
App Script
const sheetName = 'Sheet1'
const scriptProp = PropertiesService.getScriptProperties()
function initialSetup () {
const activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
scriptProp.setProperty('key', activeSpreadsheet.getId())
}
function doPost(e) {
const obj = JSON.parse(e.postData.contents);
const folderId = "1fwWhsFbuxBLt6Dc789NTe6siIuqxcv4l"; // Folder ID which is used for putting the file.
const blob = Utilities.newBlob(
obj.file,
e.parameter.mimeType,
e.parameter.filename
);
const file = DriveApp.getFolderById(folderId).createFile(blob);
const responseObj = {
filename: file.getName(),
fileId: file.getId(),
fileUrl: file.getUrl(),
};
obj.file = responseObj.fileUrl;
var doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
var sheet = doc.getSheetByName(sheetName)
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
var range = sheet.getRange("A1:A").getValues();
var filtered_r = range.filter(String).length;
var newRow = headers.map(function (header) {
return obj[header];
});
sheet.getRange(filtered_r + 1, 1, 1, newRow.length).setValues([newRow]);
return ContentService.createTextOutput(
JSON.stringify(responseObj)
).setMimeType(ContentService.MimeType.JSON);
}
I tried to modify the script in html side.