Как отобразить и отправить электронные письма указанным c пользователям, которые не соответствуют определенным критериям в Javascript / GAS - PullRequest
0 голосов
/ 31 января 2020

Я новичок в Javascript и по крупицам я использовал ресурсы здесь, в StackOverflow, для создания проекта, который использует внешний API для получения записей времени для пользователей из системы управления проектами 10k ft. Наконец-то у меня есть вместе разные функции:

  • Вызывает сведения о пользователе, включая user_id
  • Получите записи времени и суммы для каждого пользователя, чье одобрение имеет значение (в ожидании или утверждении) в заданном c диапазоне дат. Те, у кого нет одобрения, будут игнорироваться при суммировании, и их общее количество записей останется равным 0.

  • Моя задача сейчас состоит в том, чтобы только те, у кого 0, поскольку общее количество часов времени записи получают электронные письма для обновления своих время записи. Этот код, кажется, не выбирает только те, которые имеют 0 и отправлять электронные письма специально им. Я буду признателен за любые указания и / или помощь. после отправки электронного письма это должно быть записано на листе Google


var TKF_URL = 'https://api.10000ft.com/api/v1/';
var TKF_AUTH = 'auth'
var TKF_PGSZ = 2500
var from = '2020-01-20'
var to = '2020-01-26'
var options = {
    method: 'get',
    headers: {
        Authorization: 'Bearer ' + TKF_AUTH
    }
};

function getUsers() {
    var userarray = [];
    var lastpage = false;
    var page = 1;
    do {

        // gets 10kft data   
        var users = read10k_users(page);

        // writes data from current page to array   
        for (var i in users.data) {
            var rec = {};

            // pushing of mandatory data     
            rec.id = users.data[i].id;
            rec.display_name = users.data[i].display_name;
            rec.email = users.data[i].email;
            userarray.push(rec);
        }

        // checks if this is the last page (indicated by paging next page link beeing null   
        if (users.paging.next != null) {
            lastpage = false;
            var page = page + 1;
        } else {
            lastpage = true;
        }
    }
    while (lastpage == false);
    return (userarray);


    return (userarray);

}

function read10k_users(page) {

    var endpoint = 'users?';

    var url = TKF_URL + endpoint + 'per_page=' + TKF_PGSZ + '&auth=' + TKF_AUTH + '&page=' + page;
    var response = UrlFetchApp.fetch(url, options);
    var json = JSON.parse(response);

    //Logger.log(json.data)
    return (json);
}


function showTimeData() {

    var users = getUsers()

    var time_array = [];


    for (var i = 0; i < users.length; i++) {

        // Logger.log(users[i].id)
        var url = 'https://api.10000ft.com/api/v1/users/' + users[i].id + '/time_entries?fields=approvals' + '&from=' + from + '&to=' + to + '&auth=' + TKF_AUTH + '&per_page=' + TKF_PGSZ;
        var response = UrlFetchApp.fetch(url, options);
        var info = JSON.parse(response.getContentText());
        var content = info.data;
        var total_hours = 0;




        for (var j = 0; j < content.length; j++) {
        if (content[j].approvals.data.length > 0) {
                total_hours += content[j].hours;

            }
        }
        Logger.log('User name: ' + users[i].display_name + ' ' + 'User id: ' + users[i].id + '  ' + 'total hours: ' + total_hours+ '  ' + 'Email: ' + users[i].email)
    }

}



function sendMail(showTimeData){

     var emailAddress = user.email;
     var message = 'Dear ' + user.display_name + 'Please update your details in the system'
     var subject = ' Reminder';

     MailApp.sendEmail(emailAddress, subject, message);

} 

1 Ответ

1 голос
/ 31 января 2020

Мне удалось получить решение для этого следующим образом:

for (var j = 0; j < content.length; j++) {
    if (content[j].approvals.data.length > 0) {
        total_hours += content[j].hours;

    }
}

Logger.log('User name: ' + users[i].display_name + ' ' + 'User id: ' + users[i].id + '  ' + 'total hours: ' + total_hours + '  ' + 'Email: ' + users[i].email)

if (total_hours == 0) {


    sendMail(users[i])
}
}

}


function sendMail(user) {

    var emailAddress = user.email;
    var message = 'Dear ' + user.display_name + 'Please update your details in the system'
    var subject = ' Reminder';
    MailApp.sendEmail(emailAddress, subject, message);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...