Обновление другой вкладки со скриптом из сводной таблицы ???? - PullRequest
0 голосов
/ 04 июля 2019

Я новичок в написании сценариев в google и столкнулся с проблемой, с которой не могу разобраться, и мой «наставник» сценариев все еще не настолько опытен и не может этого понять.

Я пытаюсь обновить другую вкладку на своем листе из сводной таблицы, когда использую свой сценарий для отправки объемных писем.

Таким образом, ссылка ниже приведет вас к фиктивному листу, построенному из моего реального листа.Столбец «PM» L - это то, что я пытаюсь обновить.Начинается с 1 на всех работах.Письма рассылаются с помощью синей кнопки на следующей вкладке «Следить за электронной почтой» (это просто сводная таблица, поэтому я всегда могу настроить, кто легко получает письма).Но я не могу понять, как сделать так, чтобы кнопка «PM» обновлялась кнопкой одновременно с отправкой писем.

Ссылка на открытую общую таблицу.Не стесняйтесь играть, если вы можете помочь.

https://docs.google.com/spreadsheets/d/1_hipIj4suI2xMGUrZhMTBDvkQv9Y9O3JRNNQUpSeAP0/edit?usp=sharing

(пока получено только электронное письмо для правильной отправки)

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2; // First row of data to process
  var rows = sheet.getLastRow()
  var dataRange = sheet.getRange(2, 1, rows-1, 7);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (i in data) {
    var row = data[i];
    var emailAddress = row[1]; // Second column
    var message = 'Hello, we have submitted this job ' + row[2] + ' days Ago. ' + row[4] + ' \n\n' + ' -' + row[5]; 
    var subject = row[0]; // First column
    MailApp.sendEmail(emailAddress, subject, message);
  }
}

Мне нужна кнопка для отправки электронного письма на 'Follow email'вкладка и в то же время «счетчик электронной почты» (столбец L) будет добавлен 1 на вкладке «PM».Таким образом, я могу отслеживать, сколько раз эта работа была отправлена ​​с листа.

1 Ответ

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

Попробуйте этот код:

function sendEmails() {
  var pmSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PM");
  var emailSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Follow up email");

  var startRow = 2; // First row of data to process
  var rows = emailSheet.getLastRow()
  var dataRange = emailSheet.getRange(2, 1, rows-1, 7);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (i in data) {
    var row = data[i];
    var emailAddress = row[1]; // Second column
    var message = 'Hello, we have submitted this job ' + row[2] + ' days Ago. ' + row[4] + ' \n\n' + ' -' + row[5]; 
    var subject = row[0]; // First column
    MailApp.sendEmail(emailAddress, subject, message);
    updatePM(pmSheet, emailAddress);
  }
}

function updatePM(sheet, email){
  var value;
  var emails = sheet.getRange("G3:G" + sheet.getLastRow()).getValues();
  for (var i = 0; i < emails.length; i++)
    if (emails[i][0] == email){
      value = sheet.getRange("K" + (i+3)).getValue() + 1
      sheet.getRange("K" + (i+3)).setValue(value);
    }
}

Я изменил способ, которым вы получили листы, чтобы быть в безопасности, затем я просто написал небольшую функцию, которая вызывается после отправки электронного письма, которая проверяет списоксообщения электронной почты в листе PM, а затем обновляет значение в столбце отправленной электронной почты.

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