Ошибка типа: не удается найти функцию forEach в объекте в Google App Script - PullRequest
0 голосов
/ 17 января 2020

Я продолжаю работать до Не удается найти функцию для каждого объекта Ошибка при попытке l oop записей. Есть что-то, чего я не вижу? Здесь код. Этот код должен получать данные о времени из системы через API, выполнять вычисления и отправлять электронную почту

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

        var auth = 'token'

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

Ответы [ 2 ]

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

Кажется, мой API возвратил объект. Я разобрался с этим, используя метод Object.keys , и он сработал. Вот рабочий код.

function getTime() {
    var range = [53, 926, 8098];
    var user = [];
    for (var i = 0; i < range.length; i++) {

        var auth = 'token';

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

        var options = {
            method: 'get',
            headers: {
                Authorization: 'Bearer ' + auth
            }
        };

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


        Object.keys(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;
            }
        });

        Object.keys(submitted_time_entries).forEach(function (user_id) {
            if (submitted_time_entries[user_id] < 3) {
                Logger.log(time_entry)
                //send mail
            }
        });
    }
}
1 голос
/ 17 января 2020

response.data, вероятно, не тот массив, который вы ожидаете. Сервер может возвращать ошибку или успешный ответ, который не может быть проанализирован как массив. Чтобы выяснить это, выведите на консоль response.data и подтвердите, что вы ожидаете массив.

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