Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

kintone Café 大阪 vol.12

358 views

Published on

kintone Café 大阪 vol.12で使用したJavaScript APIハンズオンのスライドです。
一部文字が飛んでます。オリジナルはこちらです。
https://goo.gl/qqbVv9

Published in: Software
  • Be the first to comment

  • Be the first to like this

kintone Café 大阪 vol.12

  1. 1. vol.12 〜kintoneをさらに便利にする  JavaScriptハンズオン〜
  2. 2. 自己紹介 山下光洋 @yamamanx Blog : www.yamamanx.com ・ソフトウェア開発会社で IBMさんのBP ・ナイトレジャー会社で情シス ・エネルギー会社で情シス ヤマムギ開催 JAWS-UG OSAKA , JAWS-UG IoT関西支部 コアメンバー kintoneCafe 運営メンバー TwilioJP-UG,DevLOVE関西,RxTStudyなどに出没してます。 緑のLv15   Lv29  The八番街 Bass  AppleMusic,LINE MUSIC,AmazonMusic,AWA,レコチョク,GooglePlayなどで配信中
  3. 3. 毎日呑んでます。 今日も呑みます
  4. 4. 会場ご提供
  5. 5. 本編
  6. 6. 一覧画面のイベント
  7. 7. イベント kintoneで発生するイベントにハンドラーを紐付けて 処理をする事が出来ます。 例えば、一覧画面を表示したとき、 フィールドの編集可/不可を設定する 例えば、レコード編集画面で保存を実行したとき、 レコードにエラーを表示する 例えば、新規にレコードを追加するとき、 フィールドの値を書き換える
  8. 8. イベント kintone.events.on( event , handler )
  9. 9. イベント (function() { "use strict"; //レコード一覧画面表示後イベント kintone.events.on('app.record.index.show', function(event) { //ここに処理をかく alert("画面表示後"); }); })();
  10. 10. 動かしてみます まず、 JavaScriptを動かすための kintoneアプリを作ります。
  11. 11. kintoneアプリの作成 アプリの右の [+] をクリックします
  12. 12. kintoneアプリの作成 [はじめから作成]を選択します
  13. 13. kintoneアプリの作成 アプリの名前を適当に入力します
  14. 14. kintoneアプリの作成 文字列(1行)をドラッグ&ドロップで右の領域へ持っていきます
  15. 15. kintoneアプリの作成 右上の歯車- [設定]をクリックします
  16. 16. kintoneアプリの作成 フィールド名に「社員コード」、フィールドコードに「emp_code」を入力して[保存]をクリックします。
  17. 17. kintoneアプリの作成 同じように計5つのフィールドを作成します 種類 名前 フィールドコード 文字列(1行) 社員コード emp_code 文字列(1行) 社員名 emp_name 日付 入社日 entering_date 文字列(1行) 勤続年月 continued_month チェックボックス 無効(選択肢も無効) invalid
  18. 18. kintoneアプリの作成 フォームを作ったら[フォームを保存]して、[アプリを公開]をクリックします。
  19. 19. kintoneアプリの作成 右上の[・・・] - [アプリの設定を変更]をクリックします。
  20. 20. kintoneアプリの作成 [プロセス管理]をクリックします。
  21. 21. kintoneアプリの作成 [プロセス管理]をクリックします。
  22. 22. kintoneアプリの作成 [プロセス管理を有効にする]をチェックして[保存]をクリックします。
  23. 23. kintoneアプリの作成 [アプリを更新]をクリックします。
  24. 24. kintoneアプリの作成 アプリが出来ましたので適当にレコードを作ってみます。 右上の[+]をクリックします。
  25. 25. kintoneアプリの作成 社員コード、社員名、入社日を入力しておきます。
  26. 26. 動かしてみます https://goo.gl/gWmbbj ブラウザでアクセスすると kintone_cafe_12-master.zip がダウンロードされますので 解凍してください。
  27. 27. 動かしてみます 解凍したフォルダの中の 01_record_index_event.js を使います。
  28. 28. JavaScriptを適用 先ほど作成したアプリを開きます。
  29. 29. JavaScriptを適用 右上の[・・・] - [アプリの設定を変更]をクリックします。
  30. 30. JavaScriptを適用 [JavaScript / CSSでカスタマイズ]をクリックします。
  31. 31. JavaScriptを適用 [アップロードして追加]で 今ダウンロードしたファイルから 「01_record_index_event」を選択して、[保存]をクリックします。
  32. 32. JavaScriptを適用 [アプリを更新]をクリックします。
  33. 33. JavaScriptを適用 「画面表示後」とアラートが出れば適用OKです。
  34. 34. JavaScriptを適用 レコードの右の鉛筆アイコンをクリックすると「インライン編集開始時」とアラートが出ます。
  35. 35. JavaScriptを適用 レコードの右の保存アイコンをクリックすると「インライン編集の保存実行前」とアラートが出ます。
  36. 36. JavaScriptを適用 続いて「インライン編集の保存成功後」とアラートが出ます。
  37. 37. レコード一覧イベント (function() { "use strict"; //レコード一覧画面表示後イベント kintone.events.on('app.record.index.show', function(event) { alert("画面表示後"); }); //レコード一覧画面のインライン編集開始時イベント kintone.events.on('app.record.index.edit.show', function(event) { alert("インライン編集開始時"); }); //レコード一覧画面のインライン編集の保存実行前イベント kintone.events.on('app.record.index.edit.submit', function(event) { alert("インライン編集の保存実行前"); }); //レコード一覧画面のインライン編集の保存成功後イベント kintone.events.on('app.record.index.edit.submit.success', function(event) { alert("インライン編集の保存成功後"); }); })(); 01_record_index_event.js
  38. 38. デバッグしてみます ※当資料のブラウザは GoogleChromeを前提にしています。 ブラウザ上で右クリックして [検証]を選択します。
  39. 39. デバッグしてみます
  40. 40. デバッグしてみます [Sources]タグを選択して左のSourcesエクスプローラーで、 top - <domain>.cybozu.com - k - api/js の下にアップロードした JavaScriptファイルが配置されています。 これを選ぶと右ペインに表示されます。
  41. 41. デバッグしてみます 任意の行をクリックしてブレークポイントを設定して、 画面を更新すると、JavaScriptが実行中に設定したブレークポイントで停止します。
  42. 42. デバッグしてみます 右ペインのWatchでプラスを追加して変数 (例えば event )を追加すると、 この停止しているタイミングの変数の中身が見えます。
  43. 43. デバッグしてみます 続きを実行するときは Resume script Execution アイコンをクリックします。 ※他にもStep Over , Step Into , Step Outもあるので用途にあわせて利用します。
  44. 44. レコード一覧画面の表示イベントのプロパティ kintone.events.on('app.record.index.show', function(event) { プロパティ名 型 説明 appId 数値 アプリID viewType 文字列 一覧(ビュー)の種類 ‘list’ , ‘calendar’ , ‘custom’ viewId 数値 ビューID viewName 文字列 ビュー名 records 配列またはオブジェクト viewTypeが listの場合はレコードオブジェクトの配列。 viewTypeがcalendarの場合はキーが日付文字列、値をレコードオブジェ クトの配列としたオブジェクト。 offset 数値 一覧のオフセット数(viewTypeがcalendarの場合はnull) size 数値 一覧のレコード数(viewTypeがcalendarの場合はnull) date 文字列 カレンダービューの表示月。(viewTypeがcalendar以外はnull)
  45. 45. レコード一覧画面の表示イベントのプロパティ kintone.events.on('app.record.index.show', function(event) { console.log(event.appId); console.log(event.viewType); console.log(event.viewId); console.log(event.viewName); console.log(event.offset); console.log(event.size); console.log(event.date); console.log(event.records); }
  46. 46. レコード一覧画面の表示イベントのプロパティ
  47. 47. レコード一覧画面のインライン編集開始時のプロパティ kintone.events.on('app.record.index.edit.show', function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト インライン編集開始時のデータを保持したレコードオブジェクト recordId 数値 レコードID フィールドの値に応じた制御 ・フィールドの編集可/不可を設定する
  48. 48. レコード一覧画面のインライン編集イベントで フィールドの編集可/不可を設定する kintone.events.on('app.record.index.edit.show', function(event) { var record = event.record; record['continued_month']['disabled'] = true; return event; } ・PC用でのみ利用可能 ・スペースに貼り付けたアプリには利用出来ない ・編集権限のないフィールドを編集可能([‘disabled’]=false)にして も反映されない。
  49. 49. レコード一覧画面のインライン編集イベントで フィールドの編集可/不可を設定する
  50. 50. フィールドの編集可/不可を設定できないフィールド ・計算 ・ルックアップコピー先フィールド
  51. 51. レコード一覧画面のインライン編集保存実行前のプロパティ kintone.events.on('app.record.index.edit.submit, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコードオブジェクト recordId 数値 レコードID フィールドの値に応じた制御 ・フィールドの編集可/不可を設定する ・フィールドの値を書き換える ・フィールドにエラーを表示する ・画面の上部にエラーを表示する
  52. 52. レコード一覧画面のインライン編集保存実行前イベント でフィールドにエラーを表示する kintone.events.on('app.record.index.edit.submit, function(event) { var record = event.record; if (record['emp_code']['value'].charAt(0) != 'S'){ record['emp_code']['error'] = '社員コードの1文字目はSにしてください'; return event; } } ・PC用でのみ利用可能 ・スペースに貼り付けたアプリには利用出来ない
  53. 53. レコード一覧画面のインライン編集保存実行前イベント でフィールドにエラーを表示する
  54. 54. エラーを設定してもエラーが発生しないフィールド ・レコード番号 ・作成者 ・作成日時 ・更新者 ・更新日時 ・ステータス ・作業者
  55. 55. レコード一覧画面のインライン編集保存成功後のプロパティ kintone.events.on('app.record.index.edit.submit.success, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコードオブジェクト recordId 数値 レコードID
  56. 56. レコード一覧画面のインライン編集保存実行前のプロパティ kintone.events.on('app.record.index.edit.change.<fieldcode>, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコードオブジェクト recordId 数値 レコードID changes オブジェクト 変更されたオブジェクト changes.field オブジェクト 変更されたフィールドのオブジェクト
  57. 57. レコード一覧画面のフィールドの値に応じた制御 ・フィールドの編集可/不可を設定する ・フィールドの値を書き換える ・フィールドにエラーを表示する ・画面の上部にエラーを表示する ・変更されたフィールド、テーブル内の行オブジェクトを取得する
  58. 58. 一覧のインライン編集で勤続年月を計算する jQuery.noConflict(); (function() { "use strict"; ~~ 中略 ~~ //レコード一覧画面表示後イベント kintone.events.on('app.record.index.edit.change.entering_date, function(event) { var record = event.record; //入社日の値を取得 var entering_date = record['entering_date']['value']; //入社日から今日までの年月を計算 var continued_month = getYearMonth(entering_date); //勤続年月フィールドに計算結果を設定 record['continued_month']['value'] = continued_month; return event; }); })(); 03_record_index_edit.js
  59. 59. 外部ライブラリをURL指定で追加する 03_record_index_edit.jsを[アップロードして追加 ]する時に、 以下の2つのライブラリを[URL指定で追加]してください。 ※年月計算で使用しているライブラリです。 Cybozu CDNより使わせていただきます。 ・Moment.js https://js.cybozu.com/momentjs/2.13.0/moment-with-locales.min.js ・jQuery https://js.cybozu.com/jquery/2.2.4/jquery.min.js JavaScriptは 上から下の順に 実行されます。
  60. 60. 一覧のインライン編集で勤続年月を計算する
  61. 61. レコード一覧画面のレコード削除前のプロパティ kintone.events.on('app.record.index.delete.submit, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコードオブジェクト recordId 数値 レコードID
  62. 62. レコード削除を許可していないことを明示的に示す (function() { "use strict"; //レコード一覧画面削除前イベント kintone.events.on('app.record.index.delete.submit', function(event) { event.error = '削除は出来ません。不要なレコードは「無効」をチェックしてください。' return event; }); })(); 04_record_index_delete.js
  63. 63. レコード削除を許可していないことを明示的に示す 04_record_index_delete.js
  64. 64. 詳細画面のイベント
  65. 65. レコード詳細画面の表示イベントのプロパティ kintone.events.on('app.record.detail.show, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコードオブジェクト recordId 数値 レコードID フィールドの値に応じた制御 ・フィールドの表示/非表示を切り替える 発生タイミング ・レコード詳細画面が表示された時(通知から、ページ送りからも対象) ・レコード編集画面で[保存]または[キャンセル]をした後(編集モードを終了した後)
  66. 66. フィールドを非表示にする (function() { "use strict"; //レコード詳細画面表示イベント kintone.events.on('app.record.detail.show', function(event) { kintone.app.record.setFieldShown('emp_code',false); }); ~中略~ })(); 05_record_detail.js 非表示にできないフィールド ・ラベル ・罫線 ・スペース ・テーブル内のフィールド
  67. 67. フィールドを非表示にする 05_record_detail.js
  68. 68. レコード詳細画面の削除イベントのプロパティ kintone.events.on('app.record.detail.delete.submit, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコードオブジェクト recordId 数値 レコードID
  69. 69. レコード削除を許可していないことを明示的に示す (function() { "use strict"; ~ 中略~ //レコード一覧画面削除前イベント kintone.events.on('app.record.delete.delete.submit', function(event) { event.error = '削除は出来ません。不要なレコードは「無効」をチェックしてください。' return event; }); ~中略~ })(); 05_record_detail.js
  70. 70. レコード削除を許可していないことを明示的に示す 05_record_detail.js
  71. 71. プロセス管理のアクションイベントのプロパティ kintone.events.on('app.record.detail.process.procedd, function(event) { プロパティ名 型 説明 action オブジェクト {value : ~~~~~ } 実行したアクション status オブジェクト {value : ~~~~~ } 変更前のステータス nextStatus オブジェクト {value : ~~~~~ } 変更後のステータス record オブジェクト レコードオブジェクト ・PC用のみ ・eventオブジェクトをreturnすることでレコード情報の更新が可能 (レコード編集権限は必要 )。 ・falseをreturn した場合、event.errorプロパティを設定して eventをreturnした場合に  アクションをキャンセル ・不正な値をreturnした場合もアクションがキャンセル
  72. 72. 特定のプロセスアクション実行時に必須チェックする (function() { "use strict"; ~ 中略~ //プロセス管理のアクション実行時のイベント kintone.events.on('app.record.detail.process.proceed',function(event){ if (event.nextStatus['value'] == '処理中'){ var record = event.record; if (record['entering_date']['value'] == null){ event.error = '処理中にする前に入社日を入力してください。' return event; } } }); })(); 05_record_detail.js
  73. 73. 特定のプロセスアクション実行時に必須チェックする 05_record_detail.js
  74. 74. 追加画面のイベント
  75. 75. レコード追加画面の表示イベントのプロパティ kintone.events.on('app.record.create.show, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコード追加画面表示時のデータ(初期値)を保持したレコードオブジェクト reuse 真偽値 再利用の場合はtrue , 通常の追加はfalse
  76. 76. レコード追加画面表示イベントフィールドの値に応じた制御 ・フィールドの編集可/不可を設定する ・フィールドの値を書き換える ・フィールドにエラーを表示する ・画面の上部にエラーを表示する ・フィールドの表示/非表示を切り替える ・ルックアップの取得を自動で行う
  77. 77. レコードの追加画面表示イベントで フィールドの編集可/不可を設定する kintone.events.on('app.record.create.show', function(event) { var record = event.record; record['continued_month']['disabled'] = true; return event; } 06_record_create.js
  78. 78. レコードの追加画面表示イベントで フィールドの編集可/不可を設定する
  79. 79. レコード追加画面の保存実行前のプロパティ kintone.events.on('app.record.create.submit, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコードオブジェクト フィールドの値に応じた制御 ・フィールドの編集可/不可を設定する ・フィールドの値を書き換える ・フィールドにエラーを表示する ・画面の上部にエラーを表示する ・フィールドの表示/非表示を切り替える
  80. 80. レコード追加画面の保存実行前イベントでフィールドにエ ラーを表示する kintone.events.on('app.record.create.submit, function(event) { var record = event.record; if (record['emp_code']['value'].charAt(0) != 'S'){ record['emp_code']['error'] = '社員コードの1文字目はSにしてください'; return event; } } ・PC用とスマートフォン用で利用可能 ・スペースに貼り付けたアプリには利用出来ない 06_record_create.js
  81. 81. レコード追加画面の保存実行前イベントでフィールドにエ ラーを表示する
  82. 82. エラーを設定してもエラーが発生しないフィールド ・レコード番号 ・作成者 ・作成日時 ・更新者 ・更新日時 ・ステータス ・作業者
  83. 83. レコード追加画面の保存成功後のプロパティ kintone.events.on('app.record.create.submit.success, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコードオブジェクト recordId 数値 レコードID
  84. 84. レコード追加画面のフィールド値変更時のプロパティ kintone.events.on('app.record.create.change.<fieldcode>, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコードオブジェクト changes オブジェクト 変更されたオブジェクト changes.field オブジェクト 変更されたフィールドのオブジェクト changes.row オブジェクト 変更されたテーブル行のオブジェクト ・テーブルに行を追加した場合 : 追加した行オブジェクト ・テーブルの行を削除した場合 : null ・テーブル外のフィールドを変更した場合 : null
  85. 85. フィールド値変更イベントに指定可能なフィールド ・ラジオボタン ・ドロップダウン ・チェックボックス ・複数選択 ・ユーザー選択 ・組織選択 ・グループ選択 ・日付 ・時刻 ・日時 ・文字列(1行) ・数値 ・テーブル 下記以外の種類のフィールドを指定した場合は何も発生しません
  86. 86. レコード一覧画面のフィールドの値に応じた制御 ・フィールドの編集可/不可を設定する ・フィールドの値を書き換える ・フィールドにエラーを表示する ・画面の上部にエラーを表示する ・ルックアップの取得を自動で行う ・フィールドの表示/非表示を切り替える ・変更されたフィールドやテーブル内の行オブジェクトを  参照する
  87. 87. レコード追加画面で勤続年月を計算する jQuery.noConflict(); (function() { "use strict"; ~~ 中略 ~~ //レコード追加画面表示後イベント kintone.events.on('app.record.create.change.entering_date', function(event) { return entring_date_change(event); }); })(); 07_entering_date_edit.js
  88. 88. 編集画面のイベント
  89. 89. レコード編集画面の表示イベントのプロパティ kintone.events.on('app.record.edit.show, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコード追加画面表示時のデータ(初期値)を保持したレコードオブジェクト recordId 数値 レコードID
  90. 90. レコード一覧画面のフィールドの値に応じた制御 ・フィールドの編集可/不可を設定する ・フィールドの値を書き換える ・フィールドにエラーを表示する ・画面の上部にエラーを表示する ・フィールドの表示/非表示を切り替える ・ルックアップの取得を自動で行う
  91. 91. レコードの編集画面表示イベントで フィールドの編集可/不可を設定する kintone.events.on('app.record.edit.show', function(event) { var record = event.record; record['continued_month']['disabled'] = true; return event; } 08_record_edit.js
  92. 92. レコードの編集画面表示イベントで フィールドの編集可/不可を設定する
  93. 93. レコード編集画面の保存実行前のプロパティ kintone.events.on('app.record.edit.submit, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコードオブジェクト recordId 数値 レコードID フィールドの値に応じた制御 ・フィールドの編集可/不可を設定する ・フィールドの値を書き換える ・フィールドにエラーを表示する ・画面の上部にエラーを表示する ・フィールドの表示/非表示を切り替える
  94. 94. レコード編集画面の保存実行前イベントでフィールドにエ ラーを表示する kintone.events.on('app.record.edit.submit, function(event) { var record = event.record; if (record['emp_code']['value'].charAt(0) != 'S'){ record['emp_code']['error'] = '社員コードの1文字目はSにしてください'; return event; } } ・PC用とスマートフォン用で利用可能 ・スペースに貼り付けたアプリには利用出来ない 08_record_edit.js
  95. 95. レコード編集画面の保存実行前イベントでフィールドにエ ラーを表示する
  96. 96. エラーを設定してもエラーが発生しないフィールド ・レコード番号 ・作成者 ・作成日時 ・更新者 ・更新日時 ・ステータス ・作業者
  97. 97. レコード編集画面の保存成功後のプロパティ kintone.events.on('app.record.edit.submit.success, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコードオブジェクト recordId 数値 レコードID
  98. 98. レコード編集画面のフィールド値変更時のプロパティ kintone.events.on('app.record.edit.change.<fieldcode>, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコードオブジェクト changes オブジェクト 変更されたオブジェクト changes.field オブジェクト 変更されたフィールドのオブジェクト changes.row オブジェクト 変更されたテーブル行のオブジェクト ・テーブルに行を追加した場合 : 追加した行オブジェクト ・テーブルの行を削除した場合 : null ・テーブル外のフィールドを変更した場合 : null recordId 数値 レコードID
  99. 99. フィールド値変更イベントに指定可能なフィールド ・ラジオボタン ・ドロップダウン ・チェックボックス ・複数選択 ・ユーザー選択 ・組織選択 ・グループ選択 ・日付 ・時刻 ・日時 ・文字列(1行) ・数値 ・テーブル 下記以外の種類のフィールドを指定した場合は何も発生しません
  100. 100. レコード一覧画面のフィールドの値に応じた制御 ・フィールドの編集可/不可を設定する ・フィールドの値を書き換える ・フィールドにエラーを表示する ・画面の上部にエラーを表示する ・ルックアップの取得を自動で行う ・フィールドの表示/非表示を切り替える ・変更されたフィールドやテーブル内の行オブジェクトを  参照する
  101. 101. 編集時に勤続年月を計算する jQuery.noConflict(); (function() { "use strict"; ~~ 中略 ~~ //レコード編集画面表示後イベント kintone.events.on('app.record.edit.change.entering_date', function(event) { return entring_date_change(event); }); })(); 07_entering_date_edit.js
  102. 102. 複数のイベントをまとめて定義する jQuery.noConflict(); (function() { "use strict"; ~~ 中略 ~~ var change_events = [ 'app.record.index.edit.change.entering_date', 'app.record.create.change.entering_date', 'app.record.edit.change.entering_date' ] kintone.events.on(change_events, function(event) { return entring_date_change(event); }); })(); 10_entering_date_edit.js
  103. 103. 印刷画面のイベント
  104. 104. レコード印刷画面表示イベントのプロパティ kintone.events.on('app.record.print.show, function(event) { プロパティ名 型 説明 appId 数値 アプリID record オブジェクト レコードオブジェクト recordId 数値 レコードID フィールドの値に応じた制御 ・フィールドの表示/非表示を切り替える
  105. 105. 印刷時にフィールドを非表示にする (function() { "use strict"; //レコード印刷画面表示イベント kintone.events.on('app.record.print.show', function(event) { kintone.app.record.setFieldShown('emp_name',false); }); ~中略~ })(); 09_print.js 非表示にできないフィールド ・ラベル ・罫線 ・スペース
  106. 106. 印刷時にフィールドを非表示にする
  107. 107. グラフ画面のイベント
  108. 108. グラフ画面表示イベントのプロパティ kintone.events.on('app.report.show, function(event) { プロパティ名 型 説明 appId 数値 アプリID
  109. 109. 情報取得
  110. 110. 情報取得 ここまでイベントのプロパティから情報を取得する方法が 出てきましたが、 kintoneには用意された関数で レコード、 アプリ、 ログインユーザー などの情報を取得する事も出来ます。
  111. 111. 関数 var user = kintone.getLoginUser();
  112. 112. 関数 var user = kintone.getLoginUser(); 返り値 (を格納している変数) 関数 引数
  113. 113. ログインユーザー情報の取得 (function() { "use strict"; //レコード追加画面表示イベント kintone.events.on('app.record.create.show', function(event) { var user = kintone.getLoginUser(); console.log(user); console.log(user.name); console.log(user.code); }); })(); 11_get_login_user.js
  114. 114. getLoginUserの返り値パラメータ パラメータ 型 値と説明 id 文字列 ユーザーID。システムが自動採番。 code 文字列 ログイン名。ゲストユーザーは「Email」。 name 文字列 表示名。ゲストユーザーは「名前」。 email 文字列 E-mail。 url 文字列 URL。ゲストユーザーは空白。 employeeNumber 文字列 従業員ID。ゲストユーザーは空白。 phone 文字列 電話番号。 mobilePhone 文字列 携帯。ゲストユーザーは空白。 extensionNumber 文字列 内線。ゲストユーザーは空白。 timzone 文字列 タイムゾーン isGuest 真偽値 true or false language 文字列 言語とタイムゾーンで設定されたユーザーの言語。「webブラウザーの設定に従う」設定はブラウザの言語設定。ja - 日本語 , en - 英語 , zh - 中国語
  115. 115. レコード詳細情報取得関数 関数 返り値 または説明 引数 kintone.app.record.getId() レコードID , 利用できない画面ではnull なし kintone.app.record.get() レコードデータのオブジェクト, 利用できない画面ではnull なし kintone.app.record.getFieldElement() フィールド要素 フィールドコード kintone.app.record.set() レコードに値をセットする レコードデータ(JSON) kintone.app.record.getHeaderMenuSpaceElement() メニューの上側の空白部分の要素 なし kinotne.app.record.getSpaceElement() 指定されたスペースフィールドの要素 要素ID kintone.app.getRelatedRecordsTargetAppId() 関連レコード一覧の参照先アプリのID フィールドコード kintone.app.getLookupTargetAppId() ルックアップフィールドの参照先アプリのID フィールドコード
  116. 116. レコード一覧情報取得関数 関数 返り値 または説明 引数 kintone.app.record.getQueryCondition() 一覧の絞り込み情報クエリ文字列 なし kintone.app.getQuery() 一覧の絞り込み情報クエリ文字列(order by,limit,offset付) なし kintone.app.getFieldElements() 指定したフィールド要素の配列 フィールドコード kintone.app.getHeaderMenuSpaceElement() メニューの右側の空白部分の要素 なし kintone.app.getHeaderSpaceElement() メニューの下側の空白部分の要素 なし
  117. 117. kintone REST APIの実行
  118. 118. kintone REST APIをリクエスト kintone REST APIをJavaScriptからリクエストする事ができます。 kintone.api(pathOrUrl, method, params, callback, opt_errback); kintone.api('/v1/user/organizations', 'GET', { code: user.code }, function(resp) { var record = kintone.app.record.get(); var organization = resp.organizationTitles[0].organization; record['record']['create_section']['value'] = [{ "code": organization.code, "name": organization.name }]; kintone.app.record.set(record); });
  119. 119. 新規レコード追加時にユーザー情報と組織情報を初期値登録する (function() { 'use strict'; kintone.events.on('app.record.create.show', function(event) { var user = kintone.getLoginUser(); var record = event.record; record['create_user']['value'] = [{ "code": user.code, "name": user.name }]; kintone.api('/v1/user/organizations', 'GET', { code: user.code }, function(resp) { var record = kintone.app.record.get(); var organization = resp.organizationTitles[0].organization; record['record']['create_section']['value'] = [{ "code": organization.code, "name": organization.name }]; kintone.app.record.set(record); }); return event; }); })(); 12_get_login_org.js
  120. 120. 新規レコード追加時にユーザー情報と組織情報を初期値登録する
  121. 121. 新規レコード追加時にユーザー情報と組織情報を初期値登録する
  122. 122. 新規レコード追加時にユーザー情報と組織情報を初期値登録する
  123. 123. 新規レコード追加時にユーザー情報と組織情報を初期値登録する
  124. 124. 新規レコード追加時にユーザー情報と組織情報を初期値登録する タイプ : ユーザー選択 フィールド名 : 登録者 フィールドコード : create_user
  125. 125. 新規レコード追加時にユーザー情報と組織情報を初期値登録する タイプ :組織選択 フィールド名 : 登録部門 フィールドコード : create_section
  126. 126. 新規レコード追加時にユーザー情報と組織情報を初期値登録する
  127. 127. 新規レコード追加時にユーザー情報と組織情報を初期値登録する
  128. 128. 外部APIの実行
  129. 129. 外部APIをリクエスト 外部APIをJavaScriptからリクエストする事ができます。 kintone.proxy(url, method, headers , data, callback, opt_errback); kintone.api('http://weather.livedoor.com/forecast/webservice/json/v1?city=' + city_code, 'GET', {},{}, function(resp) { var resp_json = eval("(" + resp + ")"); console.log(resp_json); var record = kintone.app.record.get(); record['record']['weather']['value'] = resp_json.description.text; kintone.app.record.set(record); }); ※GET/DELETEの場合、dataは無視されるのでパラメータはURLにのせる必要があります。
  130. 130. フィールド変更時にAPIから天気情報を取得する function() { "use strict"; //レコード新規作成時フィールド変更イベント kintone.events.on('app.record.create.change.city_code', function(event) { var record = event.record; var city_code = record['city_code']['value']; console.log(city_code); kintone.proxy('http://weather.livedoor.com/forecast/webservice/json/v1?city=' + city_code, 'GET', {},{}, function(resp) { var resp_json = eval("(" + resp + ")"); console.log(resp_json); var record = kintone.app.record.get(); record['record']['weather']['value'] = resp_json.description.text; kintone.app.record.set(record); }); }); })(); 13_get_weather_api.js
  131. 131. フィールド変更時にAPIから天気情報を取得する タイプ : ドロップダウン フィールド名 : 都市 フィールドコード : city_code 項目: 270000 130010 170010 230010 260010
  132. 132. フィールド変更時にAPIから天気情報を取得する タイプ : 文字列(複数行) フィールド名 : 天気 フィールドコード : weather
  133. 133. フィールド変更時にAPIから天気情報を取得する
  134. 134. フィールド変更時にAPIから天気情報を取得する
  135. 135. フィールド変更時にAPIから天気情報を取得する
  136. 136. more...
  137. 137. more...
  138. 138. ご清聴ありがとうございました。 Special Thanx to…..

×