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

У меня есть 2 вкладки листа Google, первый лист1 имеет столбец A - адрес электронной почты, столбец B - сообщение, столбец C - статус. и второй лист 2 имеет только один столбец Col A - код ваучера, я вставил все свои необходимые числа в лист 2 Col A. Таким образом, каждый раз, когда я запускаю, мой скрипт отправляет электронное письмо и автоматически выбирает числа из базы Sheet2 в последней строке листа 1 данные. Электронное письмо отправлено без проблем, но я не могу получить данные кода ваучера из таблицы 2, столбец A, в моем электронном письме.

Картина

var EMAIL_SENT = 'EMAIL_SENT';

function sendEmails2() {
var sheet = SpreadsheetApp.getActiveSheet();
  

var sheet2 = SpreadsheetApp.getActive().getSheetByName("Sheet2");
var strRow2 = 2;
var numRows2 = 2;
var dataRange2 = sheet2.getRange(strRow2, 1, numRows2, 1)
 
var data2 = dataRange2.getValue();
  
for (var j = 0; j < data2.length; ++j) {    
var row2 = data2[j];
var code = row2[0];
} 
  
var startRow = 2; 
var numRows = 2; 

var dataRange = sheet.getRange(startRow, 1, numRows, 3);

var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[0]; 
var message = row[1] + "\n" + code // this code no working 
var emailSent = row[2]; 
if (emailSent !== EMAIL_SENT) 
var subject = 'Sending emails from a Spreadsheet';
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT); 
SpreadsheetApp.flush();
}
}
}

1 Ответ

1 голос
/ 06 августа 2020

Чтобы найти последнюю строку с содержимым, вы должны использовать: getLastRow () .

Вот решение:

function sendEmail() {
  
  var ss = SpreadsheetApp.getActive();
  var sh1 = ss.getSheetByName("Sheet1")
  var sh2 = ss.getSheetByName("Sheet2")
  var EMAIL_SENT = 'EMAIL_SENT';
  
  var sh1_LR = sh1.getLastRow();

  var sh1_EA = sh1.getRange(sh1_LR,1).getValue();
  var sh1_M = sh1.getRange(sh1_LR,2).getValue();
  var sh2_V = sh2.getRange(sh1_LR,1).getValue();
 
  try{
  MailApp.sendEmail(sh1_EA, sh1_M, sh2_V);
  sh1.getRange(sh1_LR,3).setValue(EMAIL_SENT);
  }
  catch(e)
  {Logger.log("sendEmail failed")}     
}
...