# テーブルで計算式を入れる時

**URL:** <https://community.cybozu.dev/t/topic/914>\
**Category:** kintone 開発相談\
**Created:** [2017 年 9 月 19 日午前 5:07 UTC](https://community.cybozu.dev/t/topic/914 "2017-09-19T05:07:00Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1748](https://avatars.discourse-cdn.com/v4/letter/l/898d66/32.png) [@Legacy\_Account1748](https://community.cybozu.dev/u/Legacy_Account1748)\
**Post date:** [2017 年 9 月 19 日午前 5:07 UTC](https://community.cybozu.dev/t/topic/914/1 "2017-09-19T05:07:00Z")

</div>

&nbsp;いつも大変お世話になっております。

先日も投稿して、アドバイス頂いておりました。

[https://developer.cybozu.io/hc/ja/community/posts/115010339006-%E8%AB%8B%E6%B1%82%E3%82%A2%E3%83%97%E3%83%AA](https://developer.cybozu.io/hc/ja/community/posts/115010339006-%E8%AB%8B%E6%B1%82%E3%82%A2%E3%83%97%E3%83%AA)

まだ行き詰まったので、アドバイスいただきたく投稿させていただきました。

①小計＝購入単価×年換算係数×契約数 （年換算係数(1 or 12)）

にしたいですが、テーブルの外にある「購入単価」をどうやってテーブルの中の計算式に入れたらいいのかわからなくて・・

②また、「年換算係数」をレコード追加するときに、レコード作成者が記入できないようにしたいですが（今は一応１or 12が入りますが、レコード作成者の記入画面でも数値を入力することができてしまって）、どんな思考で考えればよろしいでしょうか？アドバイスよろしくお願い致します。

(function() {  
“use strict”;  
kintone.events.on([‘app.record.create.submit’,‘app.record.edit.submit’], function(event){  
var record = event.record;  
record.Table.value.forEach(function(element, index){  
if (record[‘単位’][‘value’] === ‘１ユーザー/月’) {  
record.Table.value[index].value.年換算係数.value = 12;

}else {

record.Table.value[index].value.年換算係数.value = 1;  
}

record.Table.value[index].value.小計.value = Number(element.value.年換算係数.value) \* Number(element.value.契約数.value);  
});  
return event;  
});  
})();

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1740](https://avatars.discourse-cdn.com/v4/letter/l/ed8c4c/32.png) [@Legacy\_Account1740](https://community.cybozu.dev/u/Legacy_Account1740)\
**Post date:** [2017 年 9 月 20 日午前 7:51 UTC](https://community.cybozu.dev/t/topic/914/2 "2017-09-20T07:51:06Z")

</div>

玲香様

お世話になっております。  
cstapの江田と申します。

1について、サブテーブル外のフィールドについてもフィールドコードを設定することで計算に用いることができます。  
[https://help.cybozu.com/ja/k/user/set\_autocalc.html](https://help.cybozu.com/ja/k/user/set_autocalc.html)  
小計の計算式を「購入単価\*年換算係数\*契約数」とするのであれば、購入単価のフィールドコードを「購入単価」と設定すれば計算できます。

2について、年換算係数はレコードごとに1つの値に定まると思えるのですが、そのような認識で宜しかったでしょうか？  
もしそのようでしたら、サブテーブル外に年換算係数のフィールドを設置しては如何でしょうか。  
サブテーブルに含まれないフィールドであれば容易に入力不可に設定できます。

サンプルコードを書いてみました。  
ご参考になればと思います。

```
(function() {
"use strict";
kintone.events.on(['app.record.create.show','app.record.edit.show'], function(event){
var record = event.record;
record.年換算係数.disabled = true;
return event;
});
kintone.events.on(['app.record.create.change.単位','app.record.edit.change.単位'], function(event){
var record = event.record;
if (record['単位']['value'] === '１ユーザー/月') {
record.年換算係数.value = 12;
}else {
record.年換算係数.value = 1;
}
return event;
});
})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1517](https://avatars.discourse-cdn.com/v4/letter/l/4bbf92/32.png) [@Legacy\_Account1517](https://community.cybozu.dev/u/Legacy_Account1517)\
**Post date:** [2017 年 9 月 20 日午前 8:43 UTC](https://community.cybozu.dev/t/topic/914/3 "2017-09-20T08:43:32Z")

</div>

玲香さん、江田さん

横から失礼します。

江田さんからコード例がありましたので、私からプラグインを使った例を。

有償ですが、[計算式プラグイン](https://qiita.com/rex0220/items/ae83c6d5ce50ff7a9a73)と[項目検証プラグイン](https://qiita.com/rex0220/items/be20fd879f5e1bc9e035)を使った例です。

Excel の計算式のような設定で、対応できます。

&nbsp;

・操作例

&nbsp;

&nbsp;

&nbsp;

・計算式プラグインの設定例

・項目検証プラグインの設定例

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1748](https://avatars.discourse-cdn.com/v4/letter/l/898d66/32.png) [@Legacy\_Account1748](https://community.cybozu.dev/u/Legacy_Account1748)\
**Post date:** [2017 年 9 月 21 日午前 1:47 UTC](https://community.cybozu.dev/t/topic/914/4 "2017-09-21T01:47:37Z")

</div>

**[江田篤史](https://community.cybozu.dev/hc/ja/profiles/5826575706-%E6%B1%9F%E7%94%B0%E7%AF%A4%E5%8F%B2)&nbsp;様**

**いつもお世話になっております。**

**アドバイスとサンプルコードまでサポートしていただき、本当にありがとうございます。求めていた形で出来ました。**

**本当にありがとうございました。とても感謝しております。**

&nbsp;

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1748](https://avatars.discourse-cdn.com/v4/letter/l/898d66/32.png) [@Legacy\_Account1748](https://community.cybozu.dev/u/Legacy_Account1748)\
**Post date:** [2017 年 9 月 21 日午前 1:54 UTC](https://community.cybozu.dev/t/topic/914/5 "2017-09-21T01:54:10Z")

</div>

**[rex0220](https://community.cybozu.dev/hc/ja/profiles/435994154-rex0220) 様**

**いつも大変お世話になっております。**

**[rex0220](https://community.cybozu.dev/hc/ja/profiles/435994154-rex0220)さんの作っていらっしゃるプラグイン本当にすばらしいです。**

**ちょっと時間かかるかもしれないですが、上司と相談しながら、未解決のアプリはぜひ購入も含め、検討させていただきます。**

**いつもアドバイスいただき、本当にありがとうございます。**
