GAS / Javascript: Сохранить API в качестве ответа, выполнить вычисления для них и, если они соответствуют условию, отправить электронные письма - PullRequest
0 голосов
/ 17 января 2020

Я работаю над личным проектом, чтобы попытаться расширить пределы API систем управления проектами 10K ft и будучи новичком в GAS или Javascript Я буду признателен за помощь в коде, который я пытаюсь сделать. Документацию по API для этого можно найти по адресу https://github.com/10Kft/10kft-api.

Используя записи времени и конечные точки пользователей, я хотел бы провести l oop через всех пользователей и получить их записи времени для конкретный период времени. Я хотел бы, чтобы эти данные сохранялись в виде массива и добавлялись записи времени (часы) для получения итогов. Если по какой-то причине записи определенного времени пользователя меньше 3 часов, пользователю отправляется электронное письмо с уведомлением о заполнении расписаний. Я заблудился в какой-то момент. Вот код, который у меня пока есть: Всем, кто хорош в этом, пожалуйста, помогите.

function getTime() {
    var range = [5323, 9626, 4998];
    var user = [];
    for (var i = 0; i < range.length; i++) {

        var auth = 'xxxxxxxx=';

        var from = '2020-01-08'
        var to = '2020-01-09'
        var url = 'https://api.10000ft.com/api/v1/users/' + range[i] + '/time_entries?from=' + from + '&to=' + to + '&auth=' + auth;

        var options = {
            method: 'get',
            headers: {
                Authorization: 'Bearer ' + auth
            }
        };
        var response = UrlFetchApp.fetch(url, options);
        Logger.log(response.getContentText());
        var user_data = response.getContentText();
        user_data.foreach(function(data) {
        var total_hours = sum.reduce(data.hours);
        })

        var array = [];

        return array;
    }}

1 Ответ

1 голос
/ 17 января 2020
  1. Вам нужно будет проанализировать ответ.
  2. L oop через записи пользователя.
  3. Объединить их по идентификатору пользователя.
  4. L oop через агрегацию.
  5. Условно отправить электронное письмо.

Примерно так:

var submit_time_entries = {};

var response = UrlFetchApp.fetch(url, options);
var response = JSON.parse(response.getContentText());
var time_entries = response.data;

time_entries.foreach(function(time_entry) {
    if (time_entry.user_id in submitted_time_entries) {
        submitted_time_entries[time_entry.user_id] += time_entry.hours;
    } else {
        submitted_time_entries[time_entry.user_id] = time_entry.hours;
    }
});

submitted_time_entries.forEach(function(user_id) {
    if (submitted_time_entries[user_id] < 3) {
        //send mail
    }
});
...