Как получить вводимый текст из формы html с помощью Служб Google? - PullRequest
0 голосов
/ 02 февраля 2020

Мой скрипт Google Apps отправляет входные данные из файла html в указанную электронную таблицу Google Sheets. После этого запускается функция, которая отправляет уведомление по электронной почте указанному получателю onFormSubmit. Все работает нормально, но я пытаюсь получить указанные c формы ввода (имя, телефон, добавочный номер, адрес электронной почты и т. Д. c.) И отправить их в теле моего электронного письма.

Вот мой скрипт Служб Google SendNotification функция:

//EMAIL NOTIFICATION
function sendNotification(e) {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
   var range = sheet.getActiveRange().getA1Notation();
   var recipients = "test@gmail.com";
   var message = '';
function createSpreadsheetChangeTrigger() {
   var ss = SpreadsheetApp.getActive();
   ScriptApp.newTrigger('onFormSubmit')
     .forSpreadsheet(ss)
     .onFormSubmit()
     .create();
   }  
   var subject = 'Client Lead Notification';
   var body = 
      'You have a new client submission on your Google Sheets spreadsheet' + 
      '<body>' + 
      '<p>Name : '+e.parameters.name+'</p>' +
      '<p>Email : '+e.parameters.name+'</p>' +
      '<p>Contact : '+e.parameters.name+'</p>' +
      '</body>'; + ss.getUrl();
   MailApp.sendEmail(recipients, subject, body);
};

Вот остаток кода:

//FORM SUBMISSION
var sheetName = 'Sheet1'
var scriptProp = PropertiesService.getScriptProperties()

function intialSetup () {
   var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
   scriptProp.setProperty('key', activeSpreadsheet.getId())
}

function doGet() {
   return HtmlService.createHtmlOutputFromFile('index');
}

function doPost (e) {
   var lock = LockService.getScriptLock()
   lock.tryLock(10000)

   try {
      var doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
      var sheet = doc.getSheetByName(sheetName)
      var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
      var nextRow = sheet.getLastRow() + 1
      var newRow = headers.map(function(header) {
         return header === 'timestamp' ? new Date() : e.parameter[header]
      })

   sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])
   return ContentService
     .createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
     .setMimeType(ContentService.MimeType.JSON)
   }

   catch (e) {
      return ContentService
         .createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
         .setMimeType(ContentService.MimeType.JSON)
   }

   finally {
      lock.releaseLock()
      sendNotification()
   }
}

Я не опытный с Javascript / GS! Я все еще учусь и у меня есть история с HTML / CSS и C ++ в игровых движках - так что извините за мой новый ie -подобный вопрос.

1 Ответ

1 голос
/ 02 февраля 2020

Простой диалог с формой

function runMeFirst() {
  var ss=SpreadsheetApp.getActive();
  var html='<style>td,th{border:1px solid white;}</style><form name="myForm"><table>';
  html+='<tr><td><input type="text" name="First" placeholder="First" /></td><tr></tr>';
  html+='<tr><td><input type="text" name="Last" placeholder="Last" /></td><tr></tr>';
  html+='<tr><td align="center"><input type="button" value="Submit" onClick="saveData(myForm);" /></td><tr></tr>';
  html+='</table></form>';
  html+='<script>function saveData(form){console.log(form);google.script.run.processData(form);}console.log("My Code");</script>';
  var userInterface=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Data');
}

function processData(data) {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  Logger.log(data);
  sh.appendRow([data.First,data.Last]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...