Kintone input plugin for Embulk

Overview

Kintone input plugin for Embulk loads app records from Kintone. embulk 0.9 is only supported due to the dependency of kintone-java-sdk 0.4.0, which requires java 8

  • Plugin type: input
  • Resume supported: no
  • Cleanup supported: no
  • Guess supported: no

Road Map

  • [ ] Guess
  • [ ] Subtable data type support
  • [ ] field name mapping
  • [ ] timestamp_format in fields
  • [ ] handle certification fot authentication

Configuration

  • domain: Kintone domain(FQDN) e.g. devfoo.cybozu.com (string, required)
  • username: Kintone username (string, optional)
  • password: Kintone password (string, optional)
  • token: Kintone app token. Username and password or token must be configured. If all of them are provided, this plugin uses username and password (string, optional)
  • app_id: Kintone app id (integer, required)
  • query: Kintone query to retrieve records. If the query is omitted, all records are retrieved. The query syntax follows official documentation: Query Operators and Functions (string, optional)
  • basic_auth_username: Kintone basic auth username Please see Kintone basic auth here (string, optional)
  • basic_auth_password: Kintone basic auth password (string, optional)
  • guest_space_id: Kintone app belongs to guest space, guest space id is required. (integer, optional)
  • fields (required)
    • name the field code of Kintone app record will be retrieved.
    • type Column values are converted to this embulk type. Available values options are: boolean, long, double, string, json, timestamp)

Kintone API has the limitation, therefore this plugin also faces it. See official documentation

Example

in:
  type: kintone
  domain: example.cybozu.com
  username: user
  password: password
  app_id: 1
  fields:
    - {name: $id, type: long}
    - {name: $revision, type: long}
    - {name: foo, type: string}
    - {name: bar, type: long}
    - {name: baz, type: double}

Query example

in:
  type: kintone
  domain: example.cybozu.com
  username: user
  password: password
  app_id: 1
  query: Time > 10:00 and Time < 19:00 and Created_datatime = TODAY() order by $id asc limit 10
  fields:
    - {name: $id, type: long}
    - {name: $revision, type: long}
    - {name: Time, type: string}
    - {name: Created_datatime, type: string}
    - {name: foo, type: string}

Build

$ ./gradlew gem  # -t to watch change of files and rebuild continuously

Development

$ ./gradew build
$ ./gradew test