Google Apps Script для создания отчета о количестве писем, отправляемых каждым пользователем каждую неделю - PullRequest
0 голосов
/ 24 октября 2018

Уважаемые, я пытаюсь выполнить приведенный ниже код, чтобы генерировать отчеты о количестве писем, отправляемых каждым пользователем каждую неделю, но я получаю сообщение об ошибке undefined.

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

Я хотел бы запускать сценарий каждые 7 дней и добавлять новую строку для каждого уникального пользователя и даты.Таким образом, каждая строка вывода будет: Дата / Пользователь / num_emails_sent

Не могли бы вы помочь.

    /*
   * UI - Menu function
    */
    function onOpen() {
    var ui = SpreadsheetApp.getUi();
   // Or DocumentApp or FormApp.
   ui.createMenu('Mail Reports')
  .addItem('Generate User Report', 'generateUserReport')
  .addToUi();
   }

   /*
  * Main function to generate report
   */
  function generateUserReport(){
  // Get dates [perdiod start = week ago, period end = today]
  var dates = getInterval();
  var start = dates[0];
  var end   = dates[dates.length-1];
  // Get users and dates in spreadsheet
  listAllUsers();

 // Loop over sheet and add values
 var sheet = SpreadsheetApp.getActive().getActiveSheet();
 var data  = sheet.getDataRange().getValues();
 for( var i =1; i < data.length; i++){
 if(data[i][1] === ''){
 sheet.getRange(i+1, 2).setValue(start);
 sheet.getRange(i+1, 3).setValue(end);

 var sent = 0;
 var received = 0;

 dates.forEach(function(date){
 var res = getMailsReports(data[i][0], date);
 sent     = sent + Number(res.sent);
received = received + Number(res.received);
})

sheet.getRange(i+1, 4).setValue(sent);
sheet.getRange(i+1, 5).setValue(received);
 }
 }

  }


  /*
  * Get Mail reports 
  * Sent / Saved number
  */
  function getMailsReports(user, date){

   var parameters =  ['gmail:num_emails_sent', 'gmail:num_emails_received'];
    var page = AdminReports.UserUsageReport.get(user, date, {
    parameters: parameters.join(',')
     });


     return res = {
     received : page.usageReports[0].parameters[0].intValue,
     sent     : page.usageReports[0].parameters[1].intValue,
      }
      }



      /**
      * Slice dates
       */

       function getInterval(){

       var end      = new Date(new Date().getTime() - 2 * 24 * 60 * 60 * 1000);
       var start    = new Date(end.getTime() - 6 * 24 * 60 * 60 * 1000);
       var timezone = Session.getScriptTimeZone();

       var res = getDates(start, end).map(function(date){
       return Utilities.formatDate(date, timezone, 'yyyy-MM-dd');
        })

        return res;
        }

        Date.prototype.addDays = function(days) {
        var dat = new Date(this.valueOf())
        dat.setDate(dat.getDate() + days);
        return dat;
        }

        function getDates(startDate, stopDate) {
         var dateArray = new Array();
         var currentDate = startDate;
         while (currentDate <= stopDate) {
           dateArray.push( new Date (currentDate) )
          currentDate = currentDate.addDays(1);
           }
          return dateArray;
           }



            /*
             * List all users in the domaine
              */
             function listAllUsers() {
             var pageToken, page;
            do {
            page = AdminDirectory.Users.list({
             domain: 'lafargeholcim.com',
             orderBy: 'Email',
             maxResults: 100,
             pageToken: pageToken
              });
             var users = page.users;
              if (users) {
               for (var i = 0; i < users.length; i++) {
                 var user = users[i];





  SpreadsheetApp.getActive().getActiveSheet().appendRow([user.primaryEmail])
      }
      } else {
      Logger.log('No users found.');
       }
       pageToken = page.nextPageToken;
        } while (pageToken);
          }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...