Нужен код скрипта для отправки электронного письма на основе значения ячейки Google Sheets - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь написать скрипт, который будет генерировать электронное письмо конкретному человеку, когда ячейка в электронной таблице Google Sheets содержит имя этого человека. Он создается как трекер назначения. По сути, есть пять человек, которые могут получить назначения. Когда это имя вводится в ячейку для этого проекта (мои ячейки для имени назначения находятся в столбце C), я хочу отправить им электронное письмо. У меня есть адреса электронной почты на отдельном листе в том же документе. Я знаю, как настроить триггер, как только это сработает. Я написал следующий код (имейте в виду, что нужно добавить еще два имени, но вы поймете идею из этого). Происходят четыре вещи, которые я не хочу. Во-первых, это игнорирование значения имени. Неважно, какую информацию я помещаю в ячейку, она отправляет электронное письмо. Во-вторых, он отправляет электронное письмо всем, кого я добавляю в этот список, независимо от того, для кого предназначалось назначение. В-третьих, он рассылает несколько писем по одному и тому же заданию. Я только хочу, чтобы электронное письмо было разослано один раз при назначении. Наконец, если вся строка удалена (у меня есть скрипт, который перемещает его на другой лист после завершения), он снова генерирует электронные письма. Мой код ниже. Если я совершенно не в курсе, пожалуйста, скажите мне, как написать что-то, что будет работать. Большое спасибо !!

function sendEmail() {
  // Sends an email based on assignment
  var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Ongoing Projects").getRange("C"); 
  var emailAddress = emailRange.getValue();
  // Check if assignment made
  if (emailRange = 'Name here'){
    // Fetch the email address
    var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data Validation").getRange("D3");
    var emailAddress = emailRange.getValues();
    // Send Alert Email.
    var message = 'You have a new assignment waiting on the Content Project Management Sheet. Please visit the sheet to see your new assignment. '; // Second column
    var subject = 'New Content Development Assignment';
    MailApp.sendEmail(emailAddress, subject, message);}

     if (emailRange = 'Second Name Here'){
    // Fetch the email address
    var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data Validation").getRange("D2");
       var emailAddress = emailRange.getValues();
       // Send Alert Email.
    var message = 'You have a new assignment waiting on the Content Project Management Sheet. Please visit the sheet to see your new assignment. '; // Second column
    var subject = 'New Content Development Assignment';
       MailApp.sendEmail(emailAddress, subject, message);}

       if (emailRange = 'Third Name Here'){
    // Fetch the email address
    var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data Validation").getRange("D4");
         var emailAddress = emailRange.getValues();}

    // Send Alert Email.
    var message = 'You have a new assignment waiting on the Content Project Management Sheet. Please visit the sheet to see your new assignment. '; // Second column
    var subject = 'New Content Development Assignment';
    MailApp.sendEmail(emailAddress, subject, message);
    }

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Вы не использовали диапазон ячеек исправления

var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Ongoing 
 Projects").getRange("C");

должно быть

var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Ongoing 
 Projects").getRange("C3"); 

, а проверка состояния должна ==

if (emailRange = 'Name here'){

быть

if (emailRange == 'Name here'){
0 голосов
/ 03 июля 2019

Возможно, проблема в том, что вы используете определение "emailRange" несколько раз."var emailRange = ....." может перезаписывать друг друга.Хотя вы можете определять переменные в любом месте скрипта, все переменные, определенные с помощью «var», определяются сразу перед тем, как на них будет запущен какой-либо код.Таким образом, emailRange никогда не бывает пустым и всегда проходит через ваше выражение if.

Я бы использовал несколько имен переменных, таких как emailRange, emailRange2, emailRange3 и т. Д. Или вы можете создать некоторые временные переменные, используя «let» вместо «var»

...