根据数据透视表构建列表

时间:2019-07-11 03:34:12

标签: google-apps-script

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);
    }

};

因此,每次按下[发送电子邮件]按钮时,都应将数据透视表“跟进电子邮件”中的作业#放入“数据”标签的A列中,并在B列中添加时间戳。

0 个答案:

没有答案