{"id":239,"date":"2019-08-26T18:16:52","date_gmt":"2019-08-26T09:16:52","guid":{"rendered":"http:\/\/blog.grandaria.com\/?p=239"},"modified":"2024-05-30T15:01:39","modified_gmt":"2024-05-30T06:01:39","slug":"kintone%e3%81%ae%e3%82%ab%e3%83%bc%e3%82%bd%e3%83%abapi%e3%82%92perl%e3%81%8b%e3%82%89%e4%bd%bf%e3%81%86","status":"publish","type":"post","link":"https:\/\/blog.grandaria.com\/?p=239","title":{"rendered":"Kintone\u306e\u30ab\u30fc\u30bd\u30ebAPI\u3092Perl\u304b\u3089\u4f7f\u3046"},"content":{"rendered":"<p>\u30e1\u30e2\u3060\u3088\u3002<\/p>\n<p>Perl\u304b\u3089Kintone\u306e\u30ab\u30fc\u30bd\u30ebAPI\u3092\u52d5\u304b\u3057\u307e\u3059\u3002<\/p>\n<p>\u203b\u9593\u9055\u3063\u3066\u3066\u3082\u8cac\u4efb\u6301\u3061\u307e\u305b\u3093\u3002<br \/>\n<!--more--><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\u30b5\u30a4\u30dc\u30a6\u30ba\u306e\u30da\u30fc\u30b8<\/p>\n<p><a href=\"https:\/\/developer.cybozu.io\/hc\/ja\/articles\/360029152012\">\u30ec\u30b3\u30fc\u30c9\u306e\u4e00\u62ec\u53d6\u5f97 -cybozu developer network<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>\u7c21\u5358\u306b\u8a00\u3046\u3068\u3001\u4e00\u62ec\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u30ad\u30fc\u3092\u53d6\u5f97\u3057\u3066\u30c7\u30fc\u30bf\u3092\u53d6\u3063\u3066\u3044\u304f\u4ed5\u7d44\u307f\uff1f<\/p>\n<p>\u3082\u3068\u3082\u3068\u7528\u610f\u3055\u308c\u3066\u305f\u3082\u306e\u306f\u3001\u5358\u7d14\u306b<\/p>\n<p>\u30ea\u30af\u30a8\u30b9\u30c8\u306a\u3052\u3066\u53d6\u5f97\uff081\uff5e999\u307e\u3067\uff09<\/p>\n<p>\u30ea\u30af\u30a8\u30b9\u30c8\u306a\u3052\u3066\u53d6\u5f97\uff081000\uff5e1999\u307e\u3067\uff09<\/p>\n<p>\u2026\u3092\u56de\u6570\u5206\u7e70\u308a\u8fd4\u3057\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\u30ab\u30fc\u30bd\u30ebAPI\u4f7f\u3046\u5834\u5408\u306f\u3001<\/p>\n<p>\u30fb\u30ea\u30af\u30a8\u30b9\u30c8\uff08\u30d1\u30e9\u30e1\u30fc\u30bf\u3044\u308d\u3044\u308d\uff09\u6295\u3052\u3066ID\u53d6\u5f97<\/p>\n<p>\u30fb\u30ea\u30af\u30a8\u30b9\u30c8\u306bID\u8fbc\u3081\u3066\u6295\u3052\u308b\u3068\u30c7\u30fc\u30bf\u53d6\u5f97<\/p>\n<p>\u30fb\u7d42\u308f\u3063\u305f\u3089\u30ea\u30af\u30a8\u30b9\u30c8\u306bID\u8fbc\u3081\u3066\u6295\u3052\u3066\u30ab\u30fc\u30bd\u30eb\u524a\u9664<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:perl decode:true \">use strict;\r\nuse warnings;\r\nuse utf8;\r\nuse Encode;\r\nuse LWP::UserAgent;\r\nuse HTTP::Request;\r\nuse JSON;\r\nuse MIME::Base64;\r\n\r\nbinmode STDOUT, ':utf8';\r\n\r\n\r\nmy $access_basicauth_id = \"basicid\";\r\nmy $access_basicauth_pass = \"basicpass\";\r\n\r\nmy $kintone_host = \"kintonedev.cybozu.jp\";\r\nmy $kintone_id = \"kintoneid\";\r\nmy $kintone_pass = \"kitonepass\";\r\nmy $kintone_app = \"1\";\r\nmy $kintone_getdata_per_page = \"500\";\t# 1\u56de\u3054\u3068\u306e\u53d6\u5f97\u30c7\u30fc\u30bf\u6570\uff08\u6700\u5927500\uff09\r\n\r\n\r\nmy $kintone_auth = encode_base64($kintone_host.\":\".$kintone_pass);\r\nmy $basic_auth = sprintf \"basic %s\", encode_base64($access_basicauth_id.\":\".$access_basicauth_pass);\r\n\r\nmy $requrl = \"https:\/\/\" . $kintone_host . \".\/k\/v1\/records\/cursor.json\";\r\n\r\n\r\n\r\n# \u30ab\u30fc\u30bd\u30eb\u306e\u4f5c\u6210\uff08POST\u30ea\u30af\u30a8\u30b9\u30c8\uff09\r\nmy $req = HTTP::Request-&gt;new('POST', =&gt; $requrl);\r\n\r\n$req-&gt;header(\r\n\t'Authorization' =&gt; $basic_auth,\r\n\t'X-Cybozu-Ahthorization' =&gt; $kintone_auth,\r\n\t'Host' =&gt; $kintone_host,\r\n\t'Content-Type' =&gt; 'application\/json'\r\n);\r\n\r\n\r\n# fields\u3068query\u3044\u308c\u306a\u3051\u3070\u5168\u4ef6\u53d6\u5f97\r\nmy $req_json = {\r\n\t\"app\" =&gt; $kintone_app,\r\n#\t\"fields\" =&gt; [\"\u30ec\u30b3\u30fc\u30c9\u756a\u53f7\",\"\u4f5c\u6210\u8005\",\"\u4f5c\u6210\u65e5\u6642\"],\r\n#\t\"query\" =&gt; \"\u4f5c\u6210\u65e5\u6642 = TODAY() order by \u30ec\u30b3\u30fc\u30c9\u756a\u53f7 asc\",\r\n\t\"size\" =&gt; $kintone_getdata_per_page\r\n};\r\n\r\n\r\n$req-&gt;content(encode_json($req_json));\r\n\r\nmy $ua = LWP::UserAgent-&gt;new;\r\nmy $res = $ua-&gt;request($req);\r\nmy $content = $res-&gt;content;\r\n\r\nmy $cursorobj = decode_json($content);\r\n\r\nmy $cursor_id = $cursorobj-&gt;{'id'};\t\t# \u30ab\u30fc\u30bd\u30ebID\r\nmy $totalcount = $cursorobj-&gt;{'totalCount'};\t# \u53d6\u5f97\u3055\u308c\u308b\u8981\u7d20\u6570\r\n\r\n\r\n\r\n\r\n\r\n# \u30c7\u30fc\u30bf\u306e\u53d6\u5f97\uff08GET\u30ea\u30af\u30a8\u30b9\u30c8\uff09\r\n$req = HTTP::Request-&gt;new('GET', =&gt; $requrl.\"id=\".$cursor_id);\r\n\r\n$req-&gt;header(\r\n\t'Authorization' =&gt; $basic_auth,\r\n\t'X-Cybozu-Ahthorization' =&gt; $kintone_auth,\r\n\t'Host' =&gt; $kintone_host,\r\n\t'Content-Type' =&gt; 'application\/json'\r\n);\r\n\r\n# \u5fc5\u8981\u56de\u6570\u30eb\u30fc\u30d7\u3055\u305b\u3066\u53d6\u5f97\r\nfor (my $i = 0; $i &lt; $totalcount \/ $kintone_getdata_per_page; $i++)\r\n{\r\n\t$res = $ua-&gt;request($req);\r\n\tmy $resjson = decode_json($res-&gt;content);\r\n\t\r\n\t# \u3053\u3053\u306b\u8af8\u3005\u51e6\u7406\r\n}\r\n\r\n\r\n\r\n\r\n\r\n# \u30ab\u30fc\u30bd\u30eb\u306e\u524a\u9664\uff08DELETE\u30ea\u30af\u30a8\u30b9\u30c8\uff09\r\n$req = HTTP::Request-&gt;new('DELETE', =&gt; $requrl);\r\n\r\n\r\n$req_json = {\r\n\t\"id\" =&gt; $cursor_id\r\n};\r\n\r\n\r\n$req-&gt;header(\r\n\t'Authorization' =&gt; $basic_auth,\r\n\t'X-Cybozu-Ahthorization' =&gt; $kintone_auth,\r\n\t'Host' =&gt; $kintone_host,\r\n\t'Content-Type' =&gt; 'application\/json'\r\n);\r\n\r\n$req-&gt;content(encode_json($req_json));\r\n$res = $ua-&gt;request($req);\r\n\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>\u5b9f\u884c\u3057\u3066\u306a\u3044\u306e\u3067\u30b3\u30d4\u30da\u3057\u3066\u307e\u307e\u52d5\u304b\u306a\u304b\u3063\u305f\u3089\u306a\u3093\u3068\u306a\u304f\u76f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u30e1\u30e2\u3060\u3088\u3002 Perl\u304b\u3089Kintone\u306e\u30ab\u30fc\u30bd\u30ebAPI\u3092\u52d5\u304b\u3057\u307e\u3059\u3002 \u203b\u9593\u9055\u3063\u3066\u3066\u3082\u8cac\u4efb\u6301\u3061\u307e\u305b\u3093\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,8],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.grandaria.com\/index.php?rest_route=\/wp\/v2\/posts\/239"}],"collection":[{"href":"https:\/\/blog.grandaria.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.grandaria.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.grandaria.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.grandaria.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=239"}],"version-history":[{"count":5,"href":"https:\/\/blog.grandaria.com\/index.php?rest_route=\/wp\/v2\/posts\/239\/revisions"}],"predecessor-version":[{"id":319,"href":"https:\/\/blog.grandaria.com\/index.php?rest_route=\/wp\/v2\/posts\/239\/revisions\/319"}],"wp:attachment":[{"href":"https:\/\/blog.grandaria.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.grandaria.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.grandaria.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}