3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【kintone】テーブルの値を変更してみる(超初心者向け)

Last updated at Posted at 2020-12-09

こんにちは!
kintoneのテーブルって、扱いにくいですよね(いきなり)

今回は扱いにくいkintoneのテーブルの値の変更に挑戦してみたいと思います!

今回は「アプリの編集画面を開いた時に、値を変更」してみたいと思います。

アプリを準備する

アプリストアから追加

アプリストアから案件管理を追加しましょう。
サンプルデータを含めるにチェックを付けてね!
image.png

フィールドコードを変更

フィールドコードが良くないので、変えておきましょう。

旧フィールドコード 新フィールドコード
日付 活動日
ドロップダウン_1 活動内容
文字列_1行_2 メモ

フィールドコードが見やすくなるブックマークレットは @potara さんの記事を御覧ください
image.png

↓変更後。 フィールド名と同じフィールドコードにしました。
image.png

JavaScriptを書く

編集画面を開いた時に、1行目のメモの内容を変えましょう。

プログラムだけ書くとこのようになります。
解説は後述します。

//編集画面開いたときは'app.record.edit.show'
kintone.events.on(['app.record.edit.show'], event => {

    //レコードの情報(活動履歴テーブル1行目のメモ)を変更する
    event.record.活動履歴.value[0].value.メモ.value = "JavaScriptで変更";

    return event;
});    

eventの中には情報が詰まっている!

kintone.events.on(['app.record.edit.show'], event => {
この行は、「app.record.edit.show のイベント(編集画面を開いた)の時にプログラムがスタートする」ということを表しています。
※公式ドキュメントはこちら→https://developer.cybozu.io/hc/ja/articles/202166270#step1

プログラムの中にevent => {としているところがありますが、このeventにはレコードの情報が詰まっています。
eventという箱の中に、recordという箱が入っているようなイメージです。
event.record とすると、event箱の中のrecordの情報を扱うことができます。

console.log(event.record);とすると、レコードの情報がコンソールで下図のように見えます👀

※コンソールの開き方はこちらなどご覧ください→https://www.javadrive.jp/javascript/console/index1.html

image.png

「活動履歴テーブルの1行目のメモの内容」が入っている「箱」を指定する

event箱、record箱、とたどっていくと・・・
活動履歴テーブルの1行目のメモの内容」は下図のような位置にあります。

このテーブルの階層がややこしいのですが、テーブルのデータを扱う【キモ】なところです。

活動履歴テーブルには、行がvalueの配列として格納されています。
※配列?という方はこちらをどうぞ
はじめようJavaScript第7回

20201208_011429370_iOS.png

この階層を言葉で書くとしたら、
eventの中の、recordの中の、活動履歴テーブルの、1行目(value[0])の値(value)の、メモフィールドの値(value)
となり、プログラムで表すと
event.record.活動履歴.value[0].value.メモ.value
となります。
「箱」を「.(ドット)」でつないで表現します。

活動履歴テーブルの1行目のメモの内容を変更する

event.record.活動履歴.value[0].value.メモ.valueに値を代入して、return event;すると、
編集画面上のレコードに反映されます。

    //レコードの情報(活動履歴テーブル1行目のメモ)を変更する
    event.record.活動履歴.value[0].value.メモ.value = "JavaScriptで変更";
    return event;

テーブルの他の行、他のフィールドの値を変更する

変更は何個でもOK。
最後にreturn event;します。

行やフィールドを直接選んで書き換えられました。

    //レコードの情報(活動履歴テーブル1行目のメモ)を変更する
    record.活動履歴.value[0].value.活動日.value = "2020-01-01";     //1行目の活動日を変更
    record.活動履歴.value[1].value.活動内容.value = "メール";        //2行目の活動内容を変更
    record.活動履歴.value[2].value.メモ.value = "JavaScriptで変更";  //3行目のメモを変更
    return event;

before
image.png
after
image.png

|

まとめ

テーブルの値は階層が深くてややこしいですが、
record.テーブルフィールド.value[行].value.テーブルのフィールド.value
のように、valueが3つ出てくる!とおぼえておくと良いかも知れません^^

私は2番めのvalueを忘れがちです(´-`)気をつけるぞ。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?