1

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.

safna
  • 21
  • 3

0 Answers0