Как отправить по электронной почте проанализированную строку из электронной таблицы каждый раз, когда отправляется форма Google?

Я создал форму Google, которая требует от пользователей выбора имени и идентификатора из списка. Формат имени и идентификатора может быть одним из двух:

Smith, John (12345)
Doe, John (JDO)

Я хотел бы, чтобы электронное письмо автоматически отправлялось на адрес каждый раз, когда форма отправляется со строкой темы, которая является идентификатором, содержащимся только в скобках. У меня есть автоматическая отправка электронной почты, и я могу получить всю строку из нужной ячейки, но мне нужна функция, которая может анализировать строку до того, что содержится в скобках. Это то, что у меня есть на данный момент, собранное из помощи, которую я нашел на этом форуме (спасибо [email protected]).

function Initialize() {

  var triggers = ScriptApp.getScriptTriggers();

  for(var i in triggers) {
    ScriptApp.deleteTrigger(triggers[i]);
  }

  ScriptApp.newTrigger("SendGoogleForm")
  .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
  .onFormSubmit()
  .create();
  }

  function SendGoogleForm(e) 
  {  
  try 
  {  
    // You may also replace this with another email address
    var email = "[email protected]";

    // Optional but change the following variable
    // to have a custom subject for Google Docs emails


    var s = SpreadsheetApp.getActiveSheet();
    var subject = s.getRange(s.getLastRow(),21).getValue();
    var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];    
    var message = "";    

    // Credit to Henrique Abreu for fixing the sort order

    for(var i in headers) {
      message += headers[i] + ' :: '+ e.namedValues[headers[i]].toString() + "\n\n"; 
    }

    message += "Sheet URL :: " + SpreadsheetApp.getActiveSpreadsheet().getUrl() + "\n";

    // This is the MailApp service of Google Apps Script
    // that sends the email. You can also use GmailApp here.

    MailApp.sendEmail(email, subject, message); 

  } catch (e) {
    Logger.log(e.toString());
  }

 }

Я только новичок в javascript, поэтому любая помощь будет принята с благодарностью.

Ваше здоровье.


person MrMHerbert    schedule 10.12.2013    source источник


Ответы (1)


Поскольку идентификатор содержится в круглых скобках в обоих форматах, вы можете использовать строковые операции javascript, чтобы эффективно изолировать его:

...
var subject = s.getRange(s.getLastRow(),21).getValue()
               .split('(')[1].split(')')[0];
...

Объяснение. Метод split() разбивает строку на массив подстрок. Сначала мы разделяем открывающую скобку, которая, как мы ожидаем, даст нам две подстроки. Выбираем вторую (или 1-ю, так как индексы массива начинаются с 0) подстроку, содержащую ID, и далее разбиваем ее на закрывающую скобку. Из этого массива первый (0-й) элемент — это наш ID.

person Mogsdad    schedule 15.12.2013