kintoneに PHPからアクセスできる『Cybozu HTTP client for PHP』

kintoneは、APIを通じて外部のプログラムからアクセスできます。例えば、PHPと連携すればフォームから入力された情報を kintoneに格納したり、kintoneの情報をウェブページに一覧したりできます。

そして、これらの作業をサポートしてくれるライブラリーが『Cybozu HTTP client for PHP』です。Yuichi Ochiaiさんが開発され、GitHubで公開されています。早速使ってみましょう。

インストール

本ライブラリーを利用する場合は、Composerを利用すると良いでしょう。インストールしていない場合は、次のコマンドかまたは公式サイトからセットアッププログラムをダウンロードして、セットアップします。

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

そしたら、composerを通じてプロジェクトにライブラリーをセットアップしましょう。

composer require ochi51/cybozu-http

これでインストールが完了です。

kintoneの APIを有効にしよう

アクセスしたい kintoneアプリで、APIを有効にします。アプリの設定画面から「カスタマイズ/サービス連携→APIトークン」を選びます。

「生成する」ボタンをクリックして、必要なアクセス権を設定します。セキュリティの確保のために、不要なアクセス権を与えないように注意しましょう。そしたら、生成されたトークン文字列をコピーして「保存」をクリックし、さらに「アプリを更新」をクリックします。これをやらないと、実際には APIが使えないのでご注意ください。

接続する

それではいよいよ接続します。接続に必要な情報は、先のトークン情報に加えて、

  • ドメイン情報(通常は、cybozu.com)
  • サブドメイン
  • アプリのID

が必要です。いずれも、アプリを表示したときのURLで判断できます。

https://【サブドメイン】.【ドメイン】/k/【アプリID】

PHPの新しいファイルを作成したら、次のようなコードを打ち込みます。

<?php
require 'vendor/autoload.php';

define('APP_ID', XX);
$kintone = new \CybozuHttp\Api\KintoneApi(new \CybozuHttp\Client([
    'domain' => 'cybozu.com',
    'subdomain' => 'XXXXX',
    'use_api_token' => true,
    'token' => '6nGjvjlYZrvL8biTpBjdBalTnrZtcOSZS374jLZs'
]));

これで接続完了です。

レコードを挿入する

レコードを挿入する場合は、先に配列を組み立てておきましょう。次のような書式になります。

$values = [
  'キー' => [
    'value' => '値'
  ],
  'キー' => [
    'value' => '値'
  ]
]

そしたら、postメソッドでこれを渡します。

try {
  $kintone->record()->post(APP_ID, $values);
} catch (Exception $e) {
  die($e->getMessage());
}

これで、kintoneに値が入っていれば成功です。

値を取得する

値を取得する場合は、getメソッドを使います。

try {
    $records = $kintone->records()->get(APP_ID);

    echo "<ul>";
    foreach ($records['records'] as $r) {
        echo "<li>{$r['XXX']['value']}</li>";
    }
    echo "</ul>";
} catch (Exception $e) {
    die($e->getMessage());
}

取得した値は「$records[‘records’]」の中に配列として収められ、それぞれのフィールドがフィールドコードの中に「[‘value’]」という添え字で入っているなど、ちょっと素直な配列ではない点に注意が必要です。

※ 以降、アップデート・削除・検索などについても追記します。

kintone + PHPの開発のお手伝いは、H2O spaceにご用命ください。

この記事を書いた人

Makoto TANIGUCHI