kintone JS SDK(不推荐使用)

aki发表于:2019年08月08日 10:27:18更新于:2021年05月13日 14:29:21

目前不推荐使用此工具,请使用新发布的 kintone JavaScript Client (@kintone/rest-api-client) 。

Index

概要

本篇介绍于2019年3月发布的“kintone JS SDK”。
“kintone JS SDK”是继承了旧“kintone API SDK(β) for Node.js”及“kintoneUtility(日文)”等的新版。
在原有的方法的基础上,新增加了文件API的类。
另外,以后还打算添加kintoneUtility内提供有的Upsert 以及批量获取等的函数。

“kintone JS SDK”的设计思路和“kintone API SDK(β) for Node.js”以及“Kintone iOS SDK”、“kintone Java SDK”等相同。
因此,以前用过“kintone API SDK(β) for Node.js”的用户可以比较容易上手。

关于此客户端库的技术支持方针请参考这里

GitHub

https://github.com/kintone-labs/kintone-js-sdk/

文档

https://kintone-labs.github.io/kintone-js-sdk/

本次通过范例来介绍kintone JS SDK的导入方法及执行。
也可用Node.js 执行,您也可以在可执行Node.js的环境下试一下。

Node.js

https://nodejs.org/zh-cn/

注意事项

  • 根据许可协议,可对代码进行修改及再发布、用于商业目的等。

导入方法

JavaScript

https://github.com/kintone-labs/kintone-js-sdk/tree/master/dist

请保存“kintone-js-sdk.min.js”。

webpack

也可安装npm, 用webpack来打包,本次省略。
详情请参考以下链接。
https://kintone-labs.github.io/kintone-js-sdk/getting-started/quickstart-browser/#install-package-from-npm

Node.js

请在任意目录下执行下面的命令。可安装kintone JS SDK。
本篇例子是安装在“sample_project”这个目录下。

$ mkdir sample_project
$ cd sample_project
$ npm install --save @kintone/kintone-js-sdk@v0.6.1

正如文档所描述的,安装时注意Node版本不得低于8.9.3,npm版本不得低于5.5.1。

范例( JavaScript )

以下使用发布在文档的Quickstart中的简单范例代码,对执行方法和应答进行说明。
范例代码的处理是从kintone应用中获取1条记录。
准备阶段,创建kintone应用,根据下表添加字段、生成API令牌(需要的访问权限=查看权限)。

字段类型字段代码
单行文本框text

范例代码 (文件名称 : sample-for-JavaScript.js)

(function() {
  'use strict';
  kintone.events.on('app.record.index.show', function(event) {

    var kintoneConnection = new kintoneJSSDK.Connection();
    var kintoneRecord = new kintoneJSSDK.Record({connection: kintoneConnection});
    var appId = kintone.app.getId();
    var recordId = 1;

    kintoneRecord.getRecord({app: appId, id: recordId}).then(function(rsp) {
      console.log(rsp);
    }).catch(function(err) {
      console.log(err.get());
    });
  });
})();

添加到kintone应用

上面的文件和之前下载的文件在“应用的设置 > 通过JavaScript / CSS自定义”页面添加上传。

0015d53d9c23492dc967ef0b218f5ec

执行

范例代码中,因为使用了应用列表页面的 kintone JavaScript API ,请打开应用的列表页面。

应答的范例

打开浏览器的开发者工具,可以看到应答。

0015d4d03b3e1c17d6e242c29d8e748

范例( Node.js )

使用刚才创建的应用。

范例代码 (文件名 : sample-for-Node.js)

const kintone = require('@kintone/kintone-js-sdk');

const APIToken = 'xxxxxxxxxxxxxxxxxx'; // your API Token
const basicUserName = 'xxxxx'; // basicAuth user name
const basicPassword = 'xxxxx'; // basicAuth password
const kintoneAuth = new kintone.Auth();
kintoneAuth.setBasicAuth({username: basicUserName, password: basicPassword});
kintoneAuth.setApiToken({apiToken: APIToken});

const domainName = '{subdomain}.cybozu.cn';
const kintoneConnection = new kintone.Connection({domain: domainName, auth: kintoneAuth});

const kintoneRecord = new kintone.Record({connection: kintoneConnection});

const appId = xx; // target appID
const recordId = 1;

kintoneRecord.getRecord({app: appId, id: recordId}).then(function(rsp) {
  console.log(rsp);
}).catch(function(err) {
  // The promise function always reject with KintoneAPIExeption
  console.log(err.get());
});

请根据自身的环境对API令牌、验证信息、子域名、应用ID做相应的更改。
第4,5,7行仅在设置了Basic认证的情况下才需要写。
做成好的文件请保存在安装kintone JS SDK时创建的文件夹“sample_project”下。

执行

在刚才做好的范例代码的保存目录“sample_project”下执行以下命令。

% node sample-for-Node.js

如果发生错误,请确认sample.js的保存目录下是否存在node_modules这个文件夹。

应答的范例

请求成功后,返回如下应答。

{ record:    
    { '记录编号': { type: 'RECORD_NUMBER', value: '1' },    
        '更新人': { type: 'MODIFIER', "value": {"code": "Administrator", "name": "Administrator"} },    
        '创建人': { type: 'CREATOR',"value": {"code": "Administrator", "name": "Administrator"} },    
        text: { type: 'SINGLE_LINE_TEXT', value: 'sample' },    
        '$revision': { type: '__REVISION__', value: '1' },    
        '更新时间': { type: 'UPDATED_TIME', value: '2019-03-26T05:36:00Z' },    
        '创建时间': { type: 'CREATED_TIME', value: '2019-03-26T05:36:00Z' },    
        '$id': { type: '__ID__', value: '1' } } }

范例代码的解说

作为JavaScript的 kintone JS SDK和作为Node.js的kintone JS SDK 的写法是一样的,因此以下以Node.js的代码为例进行说明。

Authentication

此处是对范例代码的第3~8行进行解说。
该部分用于定义连接kintone时的验证方法。

const kintone = require('@kintone/kintone-js-sdk');    
const kintoneAuth = new kintone.Auth();

有Authentication类,可以设置密码验证、API令牌验证、Basic身份验证。
验证的优先顺序如下。(参考:kintone REST API共通规格
1.密码验证
2.API令牌验证
3.会话验证
※会话验证只有当在浏览器上使用kintone JS SDK的时候才可以使用。
※使用会话验证时,不需要像sample-for-JavaScript.js 那样要声明 Auth() 类。

密码验证

const username = 'your user name';
const password = 'your password';
kintoneAuth.setPasswordAuth({username: username, password: password});

API令牌验证

const apiTokenString = 'your token';
kintoneAuth.setApiToken({apiToken: apiTokenString});

Basic身份验证

const username = 'your user name';
const password = 'your password';
kintoneAuth.setBasicAuth({username: basicUserName, password: basicPassword});

Connection

使用第10,11行的Connection类可进行连接方面的设置。
使用要连接的域名信息以及刚才生成的验证信息,可连接到kintone环境。

const domainName = '{subdomain}.cybozu.cn';
const kintoneConnection = new kintone.Connection({domain: domainName, auth: kintoneAuth});

// for GuestSpace
const domainName = '{subdomain}.cybozu.cn';
const guestSpaceID = xx;
const kintoneConnection = new kintone.Connection({domain: domainName, auth: kintoneAuth, guestSpaceID: guestSpaceID});

※通过浏览器且使用会话验证时,无需像sample-for-JavaScript.js 那样要指定参数。

不是通过浏览器+会话验证的话,需要像下面这样写。

var kintoneAuth = new kintoneJSSDK.Auth();
kintoneAuth.setPasswordAuth({username: 'xxxx', password: 'xxxxx'});
var kintoneConnection = new kintoneJSSDK.Connection({auth: kintoneAuth});

与服务器不同,不可以指定其他子域名。

Record

最后的第13~24行。

const kintoneRecord = new kintone.Record({connection: kintoneConnection});

const appId = xx; // target appID
const recordId = 1;

kintoneRecord.getRecord({app: appId, id: recordId}).then(function(rsp) {
  console.log(rsp);
}).catch(function(err) {
  console.log(err.get());
});

这部分是执行kintoneのREST API的处理。
范例中,为了获取1条记录,使用了Record类的getRecord函数。

getRecord({app: appId, id: recordId})

参数

名称数据类型必须说明
appIDInteger应用ID
recordIDInteger记录ID

Record类中,如下文所述,除了获取1条记录外,还有各种各样的函数。

关于其他功能

Record类

该类包含了刚才范例代码中使用到的函数。
除此之外,还包括了对应用的记录进行获取、添加、更新、删除、更改状态等函数;
以及对回复进行获取、添加、删除的函数。

下面是其包含的函数的例子。

  • getRecord

  • getRecords

  • addRecord

  • addRecords

  • updateRecords

  • deleteRecords

  • updateRecordStatus

  • getComments

  • addComment

  • deleteComment

除此之外,还有各种函数。详情请参考文档。

关于Record类

https://kintone-labs.github.io/kintone-js-sdk/latest/reference/record/

关于BulkRequest类

可以对多个应用,同时发送多个API请求。
BulkRequest中可使用的函数请参考如下文档。

关于BulkRequest类

https://kintone-labs.github.io/kintone-js-sdk/latest/reference/bulk-request/

另外,执行BulkRequest时,请注意以下两点。

  • 执行BulkRequest并获取应答时,执行execute函数。

  • 一次执行中,除了excecute函数之外,最多可执行20個个。

BulkRequest范例

const kintoneBulkRequest = new kintone.BulkRequest({connection: kintoneConnection});

const responseBulkRequest = kintoneBulkRequest
  .addRecord({app: appId, record: recordData})
  .addRecords({app: appId, records: recordsData})
  .updateRecordByID({app: appId, id: recordId, record: recordData})
  .deleteRecords({app: appId, ids: recordIds})
  .execute();

responseBulkRequest.then(function(rsp) {
  console.log(rsp);
}).catch(function(err) {
  console.log(err.get());
});

App类

该类中定义了用于获取应用信息的函数。
需要密码验证,而非API令牌验证。
另外,需要应用的查看权限。
关于其所包含的函数,请参考以下文档。

关于App类

https://kintone-labs.github.io/kintone-js-sdk/latest/reference/app/

App范例

const kintoneApp = new kintone.App({connection: kintoneConnection});

const appId = xx;
kintoneApp.getApp({id: appId}).then(function(rsp) {
  console.log(rsp);
}).catch(function(err) {
  console.log(err.get());
});

File类

该类中定义了支持文件API的函数。

关于File类

https://kintone-labs.github.io/kintone-js-sdk/latest/reference/file/

File范例

const kintoneFile = new kintone.File({connection: kintoneConnection});

const fileDownloadKey = 'your_file_Key';
const outPutFileDownloadPath = 'you_file_path';
kintoneFile.download({fileKey: fileDownloadKey, outPutFilePath: outPutFileDownloadPath}).then(function(rsp) {
  console.log(rsp);
}).catch(function(err) {
  console.log(err.get());
});

最后

不管您之前是否接触过Node.js SDK(β) 或者 iOS SDK、Java SDK 等,应该都能很轻松地上手吧。
今后,还打算继续添加功能和kintoneUtility中不一样的函数、以及自己特有的函数。
希望您借此机会,多多使用kintone JS SDK 。

此Tips基于2019年3月版 kintone的最新信息。