一键作成来宾空间!

cybozu发表于:2016年10月09日 11:13:37更新于:2020年10月13日 21:28:50

概要

这次将为大家介绍:如何在应用里用JavaScript自定义来一键创建来宾空间。
这个只有当在应用中统一管理需要创建的空间,并使用统一模板来创建的时候有效。

每次手动作成空间,在空间里配置应用,这些麻烦的事情,现在只要按一下配置在记录详情页面的按钮就可以轻松解决了。

0015804a6b80a2785bfbb97009a1266

那就快点来看看吧。

代码

(function() {
    "use strict";
    // 模板来宾空间ID
    var SP_TEMPLATE_ID = 2;
    function createRequestBody() {
        // 获取记录信息
        var record = kintone.app.record.get().record;
        // 获取用户选择字段
        var users = record["用户选择"].value;
        // 设定空间成员
        var members = (function() {
            var array = [];
            for (var i in users) {
                if (!users.hasOwnProperty(i)) { continue; }
                var member = {
                    'entity': {
                        'type': 'USER',
                        'code': users[i].code
                    },
                    'isAdmin': true // 管理员标记
                };
                array.push(member);
            }
            return array;
        })(record);
        return {
            'id': SP_TEMPLATE_ID,
            'name': record["来宾空间名"].value,
            'isGuest': true, // 来宾空间
            'members': members
        };
    }
    function createGuestSpace() {
        // 请求作成
        var params = createRequestBody();
        // 运行生成空间API
        var url = kintone.api.url('/k/v1/template/space', true);
        return kintone.api(url, 'POST', params).then(function(resp) {
            alert("成功生成空间");
        }).catch(function(e) {
            alert("生成空间时发生了错误");
        });
    }
    kintone.events.on("app.record.detail.show", function(event) {
        if (document.getElementById("menuButton") !== null) { return; }
        var menuButton = document.createElement("button");
        menuButton.id = "menuButton";
        menuButton.innerHTML = "生成来宾空间";
        menuButton.onclick = function() {
            createGuestSpace();
        };
        kintone.app.record.getHeaderMenuSpaceElement().appendChild(menuButton);
    });
})();

处理详细

首先,显示记录详情页面上的空间作成按钮。

kintone.events.on("app.record.detail.show", function(event) {
    // 增值bug对策
    if (document.getElementById("menuButton") !== null) { return; }
    var menuButton = document.createElement("button");
    menuButton.id = "menuButton";
    menuButton.innerHTML = "生成来宾空间";
    menuButton.onclick = function() {
        createGuestSpace();
    };
    kintone.app.record.getHeaderMenuSpaceElement().appendChild(menuButton);
});

接下来编写点击按钮时的处理。

生成空间API 有各种各样的设定。这次就设定最低限度的4个参数。

生成空间的参数

  1. id:作为基准的空间模板的ID

  2. name:将要作成的空间的名字

  3. isGuest:非来宾空间的情形false、来宾空间的情形true

  4. members:空间里包含着的正式用户 (至少需要设定1个人以上)

详细请参考这个(暂无中文)

function createRequestBody() {
    // 获取打开着的记录信息
    var record = kintone.app.record.get().record;
    // 获取用户选择字段
    var users = record["用户选择"].value;
    // 设定空间成员
    var members = (function() {
        var array = [];
        for (var i in users) {
            if (!users.hasOwnProperty(i)) { continue; }
            var member = {
                'entity': {
                    'type': 'USER',
                    'code': users[i].code
                },
                'isAdmin': true // 管理员标记
            };
            array.push(member);
        }
        return array;
    })(record);
    return {
        'id': 'SP_TEMPLATE_ID',
        'name': record["来宾空间名"].value,
        'isGuest': true, // 来宾空间标记
        'members': members
    };
}

最后使用空间API提交请求。

// 运行生成空间API
var url = kintone.api.url('/k/v1/template/space', true);
return kintone.api(url, 'POST', params).then(function(resp) {
    alert("成功生成空间");
}).catch(function(e) {
    alert("生成空间时发生了错误");
});

0015804a7385a0d787293d16de91bcb 

 这个Tips是在确认了2016年10月版基础上做的。