Скрипт не меняет данные в шаблоне

Я пытался создать сценарий, который будет отправлять мне отчет по электронной почте, когда форма будет заполнена. В настоящее время он правильно отправляет электронное письмо и PDF, но не заменяет ключевые данные данными из формы. Что я делаю неправильно?

Код.gs

var docTemplate = "19vFf3Mzo9GbD2xyWmRHlbFMnVZuXC4TdF44bCQR9SfY";
var docName = "Test Form2PDF";

function onFormSubmit(e) {
  var email_address = "[email protected]";
  var Field1 = e.values[1];
  var Field2 = e.values[2];
  var Field3 = e.values[3];
  var Field4 = e.values[4];
  var Field5 = e.values[5];
  var Field6 = e.values[6];
  var Field7 = e.values[7];

  // Get document template, copy it as a new temp doc, and save the Doc’s id                        
  var copyId = DocsList.getFileById(docTemplate)
    .makeCopy(docName + ' for ' + Field1)
    .getId();

  // Open the temporary document
  var copyDoc = DocumentApp.openById(copyId);

  // Get the document’s body section
  var copyBody = copyDoc.getActiveSection();
  copyBody.replaceText('keyField1', Field1);
  copyBody.replaceText('keyField2', Field2);
  copyBody.replaceText('keyField3', Field3);
  copyBody.replaceText('keyField4', Field4);
  copyBody.replaceText('keyField5', Field5);
  copyBody.replaceText('keyField6', Field6);
  copyBody.replaceText('keyField7', Field7);
  // Save and close the temporary document
  copyDoc.saveAndClose();

  // Convert temporary document to PDF
  var pdf = DocsList.getFileById(copyId).getAs("application/pdf");

  // Attach PDF and send the email
  var subject = "Test Form Report";
  var body = "Here is the test form for " + Field1 + "";
  MailApp.sendEmail(email_address, subject, body, {
    htmlBody: body,
    attachments: pdf
  });

  // Delete temp file
  DocsList.getFileById(copyId).setTrashed(true);
}

docШаблон

Process: Responsible IT Resource to fill out form and send to
appropriate stakeholder for approval prior to making ANY change
to the Network/Server environment.

1. DESCRIPTION: keyField1

2. SYSTEMS IMPACTED: KeyField2

3. START DATE/TIME/DURATION: KeyField3

4. BENEFITS: KeyField4

5. RESPONSIBLE IT RESOURCES/CONTACT INFO: KeyField5

6. BUSINESS IMPACT: [How will this affect the business?]: KeyField6

7. TESTING: [what is the test plan]: KeyField7

person David Chernay    schedule 18.08.2014    source источник


Ответы (1)


Проблема просто в том, что keyField в вашем документе-шаблоне имеют другую прописную букву, чем в вашем коде, поэтому они не найдены для метода replaceText().

Совет в документе Google Apps Script недоступен с помощью replaceText( ) применимо и здесь; ваши ключи были бы лучше, если бы они содержали нечетные знаки препинания. И они были бы менее подвержены ошибкам (и более очевидны), если бы они были написаны заглавными буквами, например. %KEYFIELD1%. А еще лучше со значимыми именами, например. %DESCRIPTION%, %SYSTEMS_IMPACTED% и т. д.

person Mogsdad    schedule 14.11.2014