Построение списка из сводной таблицы - PullRequest
0 голосов
/ 11 июля 2019

https://docs.google.com/spreadsheets/d/1H0qwHi_TOCY9k3WpTNazt-im7swMOO2h7AIeyYgNYH8/edit?usp=sharing

Я учусь кодировать (первая неделя) и пытаюсь заставить некоторые вещи работать, но я потерпел неудачу, и я чувствую себя глупо, поскольку это должно быть очень просто. Некоторые из вас, а также мой двоюродный брат помогали мне с кодом, который уже есть в этом листе, начинали понимать, что я делаю, но я могу только манипулировать кодом, но не писать его. Я хотел бы видеть, как это должно быть сделано, чтобы я мог учиться на этом. Так что ссылка на открыто редактируемый лист, и я пытаюсь заставить работать простую функцию, не стесняйтесь редактировать лист, если хотите:

Вкладка «Отслеживать электронную почту» - это сводная таблица, которую я использую для одновременной отправки по электронной почте всем просроченным клиентам. Приведенный ниже код прекрасно работает, обновляя мою следующую дату электронной почты, счетчик электронной почты и даже вставляя заметку в метку времени ячейки. Но я также пытаюсь сохранить часть данных на вкладке «Данные» для каждого электронного письма, выходящего за пределы сводной таблицы.

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];
    var jobnumber = row[0];
    // Second column
    var message = 'Hello, we have sent in a supplement ' + row[2] + ' days Ago. ' + row[4] + ' \n\n' + ' -' + row[5]; 
    var subject = row[0]; 
    // First column
    MailApp.sendEmail(emailAddress, subject, message);
    updatePM(pmSheet, jobnumber);
    Note(pmSheet, jobnumber);
  }
}

function updatePM(sheet, number){
  var value;
  var datevalue;
  var jobnumber = sheet.getRange("D3:D" + sheet.getLastRow()).getValues();
  for (var i = 0; i < jobnumber.length; i++)
    if (jobnumber[i][0] == number){
      value = sheet.getRange("K" + (i+3)).getValue() + 1
      datevalue = sheet.getRange("I" + (i + 3)).getValue() -     (-259200000)
      sheet.getRange("K" + (i+3)).setValue(value);
      sheet.getRange("I" + (i + 3)).setValue(new     Date(datevalue)).setNumberFormat("MM/dd/yyyy");
    }
}

function Note(sheet, number) {

  var timezone;
  var newText;
  var notevalue;
  var existingNote;


  var jobnumber = sheet.getRange("D3:D" +     sheet.getLastRow()).getValues();
  for (var i = 0; i < jobnumber.length; i++)
    if (jobnumber[i][0] == number){

    existingNote = sheet.getRange("E" + (i+3)).getNote();

    timezone = Utilities.formatDate(new Date(), "GMT-4", "M/dd/yy',     'h:mm a"); 
    // Get the current time;
    newText = '-updated file on ' + timezone + '\n\n';
    notevalue = existingNote != "" ? existingNote + newText :                 "Notes:\n\n" + newText;
    sheet.getRange("E" + (i+3)).setNote(notevalue);
    }

};

Таким образом, каждый раз, когда нажимается кнопка [отправить электронное письмо], она должна помещать задание # из сводной таблицы «Follow email» в столбец A на вкладке «Данные» и метку времени в столбец B.

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