Completed

Google Apps Script 2

Published on the June 11, 2021 in IT & Programming

About this project

Open

OBS: A descrição será aplicada para um outro formulário, que vou compartilhar na sequência.

Breve descrição do projeto: https://www.youtube.com/watch?v=Hnc2SUO79_I

Segue anexa uma figura ilustrativa.

Segue o código que estou utilizando:

function afterFormSubmit(e) {

    const info = e.namedValues;
    const pdfFile = createPDF(info);
    const entryRow = e.range.getRow();
    const ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Page3")
    ws.getRange(entryRow, 3).setValue(pdfFile.getUrl());
    ws.getRange(entryRow, 4).setValue(pdfFile.getName());

    sendEmail(e.namedValues['E-mail'][0],pdfFile);

}

function sendEmail(email,pdfFile){

  GmailApp.sendEmail(email, "Here is Your PDF", "Your PDF is attached.", {
    Attachments: [pdfFile],
    name: 'PIAES'
});

}

function createPDF(info){

  const pdfFolder = DriveApp.getFolderById("19IVmyeeUPpK3sukrZ-QJurSS0xtFiblC");
  const tempFolder = DriveApp.getFolderById("1ciddGoE8Nyx1RLS09-1_FzlEJ6awLSa0");
  const templateDoc = DriveApp.getFileById("1_poo4_ZW75C389OwKdrWSCYY1zBQExpzBH1acuxRv70");

  const newTempFile = templateDoc.makeCopy(tempFolder);

  const openDoc = DocumentApp.openById(newTempFile.getId());
  const body = openDoc.getBody();
  body.replaceText("{a}", info['Carimbo de data/hora'][0]);
  body.replaceText("{b}", info['E-mail'][0]);
  body.replaceText("{c}", info['Your Name'][0]);

  openDoc.saveAndClose();

  const blobPDF = newTempFile.getAs(MimeType.PDF);
  const pdfFile = pdfFolder.createFile(blobPDF).setName(info['Your Name'][0] + " " + "-" + " " + info['Carimbo de data/hora'][0]);
  tempFolder.removeFile(newTempFile);

  return pdfFile;

}

Eu baseei esse código JavaScript acima no vídeo abaixo:
https://youtu.be/EpZGvKIHmR8

Segue um trecho de código que talvez possa ajudar:
const ss = SpreadsheetApp.openById("167fJ2b8Gxty6ki1aNRhwmDaYBWKrrdiqEwkyEd8e8MM");
  const sheetResponse = ss.getSheetByName("Respostas ao formulário 1");
  const data = sheetResponse.getRange(sheetResponse.getLastRow(), 3, sheetResponse.getLastRow(), 3).getValues();
  const dataCountry = sheetResponse.getRange(sheetResponse.getLastRow(), 4, sheetResponse.getLastRow(), 4).getValues();

  const sheetParam = ss.getSheetByName("Page2");
  const dataParam = sheetParam.getRange(1, 1, sheetParam.getLastRow(), sheetParam.getLastColumn()).getValues();

  Logger.log('Columns Page2: %s ', dataParam[0])

  for (var i=1; i < dataParam.length; i++) {
    Logger.log('Your Name Page2 Column Value [%d]: %s',1, dataParam[1][0])
  }

  for (var i=0; i < dataCountry.length - 1; i++) {
    Logger.log('Form Column "Country": %s',dataCountry[i][0])
  }

  for (var i=0; i < data.length - 1; i++) {
    Logger.log('Form Column "Your Name": %s',data[i][0]);
  }

Se quiser colocar, por exemplo, o país do form no documento, acho que precisa fazer um body.replaceText("{d}", info['Your Country'][0]);

Se for pegar o número (número 4 do exemplo), acho que poderia fazer algo como:
const sheetResponse = numberCountrySheet();
body.replaceText("{d}", sheetResponse);

Project overview

Breve descrição do projeto: https://www.youtube.com/watch?v=Hnc2SUO79_I Eu baseei esse código JavaScript acima no vídeo abaixo: https://youtu.be/EpZGvKIHmR8

Category IT & Programming
Subcategory Web development
What is the scope of the project? Small change or bug
Is this a project or a position? Project
I currently have I have an idea
Required availability As needed
Roles needed Developer

Delivery term: Not specified

Skills needed