将应用的统计数据发布到空间主题的评论里

cybozu发表于:2017年02月23日 13:26:23更新于:2020年07月09日 10:30:09

概要

2016年8月的更新(日语)追加了 “空间的主题内发表评论”,这次将为大家介绍使用了这个新功能的Tips。

追加的REST API的概要

新追加的REST API,可以在请求本体里指定空间ID和主题ID,然后在主题里发表评论。评论里可以提醒用户或者组织/group查看,并且还可以添付图像(使用文件密钥来指定)。

关于具体的指定参数,可以参照此篇文章

这次情景的要点

感觉灵敏的人,可能一看这个功能名字就一下子明白了吧,现实情况是使用这个REST API只可以POST,不能GET。

因此,我们这次使用这个API实现的是单向操作的范例。具体为,点击应用里的按钮,统计应用里的数据,然后向主题里发表评论。百闻不如一见,下面就是完成的样子。

完成的样子

首先是应用。

点击列表页面的头部菜单空间里的 “将今天的结果发表到主题的评论里” 按钮…

00158bd376d12f2938353732543f54e

(注:这个页面里的都是测试数据,并非实际的业务内容。)

之后,确认下主题这边的页面。

在最新发表的评论里,我们可以看到应用数据的统计结果。

00158bd3c82630ebb4ef066faa0c703 

事先准备

准备主题-应用间的整合,需要以下这些操作顺序。

  1. 在kintone 的首页,作成一个空间,记住空间的ID。

  2. 在空间里作成相关的主题,记住主题的ID。

  3. 在空间里作成应用。

  4. 在应用里添加记录。

关于空间ID和主题ID,我们可以用浏览器打开空间的主题,确认URL。比如以下的范例里,空间ID为4,主题ID为5。

00158bd34e8bf8acac0f10c5ba98fd1

关于应用这边的要做的事情,因为这次我们只是合计记录的条数,所以字段可以随意的设置。另外,在这次的Tips里,我们需要根据记录条数的创建时间,合计本日和本月的条数,所以请大家尽可能添加多条创建时间间隔2日以上的数据。

点击回复按钮后的确认页面,我们使用的是Cybozu CDN里的SweetAlert,所以在 “应用的设置” 页面里有必要添加CDN的URL。developer network的这篇文章,可以做成漂亮的确认页面,大家可以参考下。

00158bd37b35e25f520add9b0b0bdfa

范例程序和解说

范例程序(JavaScript)

注意事项

  • 才望子不予以保证本范例程序的正常运行。

  • 才望子不提供对程序范例的技术支持。

以下是范例程序的概要。

  1. 作成按钮

  2. 点击按钮时的处理在以下3-5的步骤里描述。

  3. 使用REST API获取本月作成的全部记录信息

  4. 使用JavaScript从上述记录里合计本日的作成部分,放到变量里。

  5. 将步骤3和步骤4的内容发表到主题的评论里

以下是全部的代码。

(function() {
    "use strict";
    kintone.events.on('app.record.index.show', function(event) {
        if (document.getElementById('my_index_button') !== null) {
            return;
        }
        // 创建按钮
        var myIndexButton = document.createElement('button');
        myIndexButton.id = 'my_index_button';
        myIndexButton.innerHTML = '将今天的结果发表到主题的评论里';
        // 点击按钮时的处理
        myIndexButton.onclick = function() {
            //  使用SweetAlert的确认页面
            swal({
                title: "发表评论后确认",
                text: "是否发表合计结果?",
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "OK",
                cancelButtonText: "取消",
                closeOnConfirm: false,
                closeOnCancel: false
            },
            function(isConfirm) {
                if (isConfirm) {
                    var d = new Date();
                    var month = d.getUTCMonth() + 1;
                    var hour = d.getUTCHours() + 9;
                    var min = d.getUTCMinutes();
                    // 获取本月作成的全部记录信息
                    var params = {
                        'app': 13565,
                        "query": "创建时间 = THIS_MONTH()", // 指定本月
                        "fields": ["$id", "创建时间"],
                        "totalCount": true // 本月件数合计
                    };
                    kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params, function(resp) {
                        var monthCount = resp.totalCount;
                        // 当日的件数合计
                        var today = new Date();
                        var todayUTC = today.getUTCDate();
                        var todayCount = 0;
                        for (var i = 0; i < resp.records.length; i++) {
                            if (new Date(resp.records[i]['创建时间'].value).getUTCDate() === todayUTC) {
                                todayCount++;
                            }
                        }
                        // 主题内发表评论
                        var body = {
                            "space": 524,
                            "thread": 1044,
                            "comment": {
                                "text": "报告当日 " + month + "月" + todayUTC + "日 " + hour + "时" + min +
                                "分 的咨询业绩。\n当天新接待: " + todayCount +
                                " 条\n本月的累积条数: " + monthCount + " 条。",
                                "mentions": [
                                    {
                                        "code": "客户本部_9tkO30",
                                        "type": "ORGANIZATION"
                                    }
                                ]
                            }
                        };
                        kintone.api(kintone.api.url('/k/v1/space/thread/comment', true), 'POST', body, function(res) {
                            swal("发表成功", "主题内发表评论成功", "success");
                        }, function(error) {
                        });
                    });
                }else {
                    swal("取消成功", "已取消", "error");
                }
            });
        };
        kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);
    });
})();

使用新API的地方

下面是,这次使用的新功能的部分代码。

// 主题内发表评论
var body = {
    "space": 524,
    "thread": 1044,
    "comment": {
        "text": "报告当日 " + month + "月" + todayUTC + "日 " + hour + "时" + min +
        "分 的咨询业绩。\n当天新接待: " + todayCount +
        " 条\n本月的累积条数: " + monthCount + " 条。",
        "mentions": [
            {
                "code": "客户本部_9tkO30",
                "type": "ORGANIZATION"
            }
        ]
    }
};
kintone.api(kintone.api.url('/k/v1/space/thread/comment', true), 'POST', body, function(res) {
    swal("发表成功", "主题内发表评论成功", "success");
}, function(error) {
});
  • 像上面这样指定空间ID和主题ID,然后POST。在指定谁看里,填入组织代码和类型。

其他的要点

关于可获取的记录数

// 获取本月作成的全部记录信息
var params = {
    'app': 13565,
    "query": "创建时间 = THIS_MONTH() limit 500", // 指定本月
    "fields": ["$id", "创建时间"],
    "totalCount": true // 本月件数合计
};
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params, function(resp) {
  • 在REST API的 “query” 参数里,什么也不指定的情形,可获取的记录条数的上限是100条。可以扩大“limit” 选项的上限,最大为500。因此,当前的范例程序可以获取的最大上限数为500条。这里是关于这个API的文档说明。

totalCount的使用

  • REST API的请求参数 “totalCount” 置成 “True” 的时候,可以简单的合计记录条数。这里是关于这个API的文档说明。

今天作成件数的获取方法(例)

// 当日的件数合计
var today = new Date();
var todayUTC = today.getUTCDate();
var todayCount = 0;
for (var i = 0; i < resp.records.length; i++) {
    if (new Date(resp.records[i]['创建时间'].value).getUTCDate() === todayUTC) {
        todayCount++;
    }
}
  • 使用totalCount可以合计本月的作成条数,这次还需要获取当日部分的合计,上面的代码是使用JavaScript的for循环来合计的代码详细。

使用的API


    1. 添加事件句柄

    2. 记录列表页面显示后的事件

    3. 批量获取记录(在查询中指定条件)

    4. 空间的主题内发表评论

    5. 获取菜单上侧的空白部分的元素

结尾

新添加的REST API的使用方法就为大家介绍完毕了。整合了应用和主题,kintone作为一种交流工具可使用的范围更大了吧!

该Tips在2016年8月版中进行过确认。