【问题标题】:TypeError: Cannot find function forEach in object in Google App ScriptTypeError:在 Google App 脚本的对象中找不到函数 forEach
【发布时间】:2020-01-17 17:58:36
【问题描述】:

在尝试循环条目时,我一直运行到 Cannot find function for each in object 错误。有什么我没有看到的吗?这里是代码。此代码应该通过 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
            }
        });
    }
}

【问题讨论】:

  • forEach() 不是foreach(),注意骆驼外壳。
  • @ross 感谢您的举报。我已经更改了大小写,但仍然得到一个错误 Cannot find function forEach in object [object Object]。 查看我编辑的代码。

标签: javascript arrays api loops google-apps-script


【解决方案1】:

response.data 可能不是您期望的数组。服务器可能会返回错误或无法解析为数组的成功响应。要找出答案,请将response.data 打印到控制台并确认它是您期望的数组。

【讨论】:

  • 嘿@spork 感谢您的意见。我使用了 Object.keys() 方法,该方法返回一个对象的键数组并且它有效。这就是这部分代码现在的样子:Object.keys(time_entries).forEach(function (time_entry) {
  • 好的,听起来您的 API 返回的是对象而不是数组,这就是您收到错误的原因。
  • 看起来是这样。感谢您花时间查看代码
【解决方案2】:

似乎我的 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
            }
        });
    }
}

【讨论】:

    猜你喜欢
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多