Проблемы с автоматизацией электронной почты из листов Google - PullRequest
1 голос
/ 05 октября 2019

Я очень плохо знаком со скриптом Google и не могу понять, почему мой скрипт не работает. Когда я пытаюсь запустить код, я получаю следующий код ошибки -

TypeError: Невозможно прочитать свойство "range" из неопределенного. (строка 2, файл «Код»

Если кто-нибудь может оказать новичку помощь, которая будет очень признательна!

function sendEmail(event){
var sheet = event.range.getSheet();
if(sheet.getName() !== 'Sheet1') {
 // if it's not the correct sheet we end the function here
 return;
 }
 var range = event.range;
 var row = range.getRow(); // we get the index of the row of the 
edited 
 cell
var dataRange = sheet.getRange("A" + row + ":C" + row);
var values = dataRange.getValues();
var rowValues = values[0];
var recipient = rowValues[0];
var email = rowValues[1];
var refillsNumber = rowValues[2];
if (refillsNumber = 2) {
 // if 'refillsNumber' is not equal to 2 we end the function here
var message = 'Dear ' + recipient + ',\n\n'+ 'You have ' + 
refillsNumber + ' remaining would you like to buy more?' + '\n\n' + 
'Kind regards,' + '\n\n' + 'The revol team.';
var subject = 'Refill reminder';
MailApp.sendEmail(email,subject,message);
return
 }
if (refillsNumber !== 0) {
return}
var message = 'Dear ' + recipient + ',\n\n'+ 'You have ' + 
refillsNumber + ' remaining would you like to buy more? If not then 
would you like to end your subsription?' + '\n\n' + 'Kind regards,' 
+ '\n\n' + 'The revol team.';
var subject = 'Refill reminder';
MailApp.sendEmail(email,subject,message);
return
}

// in addition to this script which aims to send an email to the 
customer when they only have 2 refill remaining - 
/// I also want to set up a function that sends an email when they 
have 0 refills remaining

1 Ответ

1 голос
/ 05 октября 2019

Отправка электронных писем путем редактирования столбца C

Я изменил имя листа и добавил дополнительное условие. Я также закомментировал MailApp.sends и заменил их записями на боковой панели, чтобы я мог проверить его, не пытаясь отправлять электронные письма.

Вам потребуется создать триггер onEdit для этой функции.

function sendMailOnEdit(event){
  var sheet = event.range.getSheet();
  if(sheet.getName() !== 'Sheet2' || event.range.columnStart!=3) {return;}
  var range=event.range;
  var row=range.rowStart;
  var dataRange = sheet.getRange(row,1,1,3);
  var values=dataRange.getValues();
  var rowValues=values[0];
  var recipient = rowValues[0];
  var email = rowValues[1];
  var refillsNumber = rowValues[2];
  if (refillsNumber==2) {
    var message = 'Dear ' + recipient + ',\n\n'+ 'You have ' + refillsNumber + ' remaining would you like to buy more?' + '\n\n' + 'Kind regards,' + '\n\n' + 'The revol team.';
    var subject = 'Refill reminder';
    //MailApp.sendEmail(email,subject,message);
    var html=Utilities.formatString('<br />Email: %s<br />Subject: %s<br />message: %s<br /><hr>', email,subject,message);
    var userInterface=HtmlService.createHtmlOutput(html);
    SpreadsheetApp.getUi().showSidebar(userInterface);
    return
  }
  if (refillsNumber !== 0) {return}
  var message = 'Dear ' + recipient + ',\n\n'+ 'You have ' + refillsNumber + ' remaining would you like to buy more? If not then would you like to end your subsription?' + '\n\n' + 'Kind regards,' + '\n\n' + 'The revol team.';
  var subject = 'Refill reminder';
  //MailApp.sendEmail(email,subject,message);
  var html=Utilities.formatString('<br />Email: %s<br />Subject: %s<br />message: %s<br /><hr>', email,subject,message);
  var userInterface=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showSidebar(userInterface);

}

Вот так выглядит моя электронная таблица:

enter image description here

И позвольте мне напомнить, что вы не можете запустить эту функцию безобъект события.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...