# 【Kintone/K-Mailer】メールを作成ボタン押下時「選択中のメールセット」の選択を変える方法

**URL:** <https://community.cybozu.dev/t/topic/5325>\
**Category:** kintone 開発相談\
**Created:** [2021 年 10 月 1 日午前 5:25 UTC](https://community.cybozu.dev/t/topic/5325 "2021-10-01T05:25:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account2577](https://avatars.discourse-cdn.com/v4/letter/l/bcef8e/32.png) [@Legacy\_Account2577](https://community.cybozu.dev/u/Legacy_Account2577)\
**Post date:** [2021 年 10 月 1 日午前 5:25 UTC](https://community.cybozu.dev/t/topic/5325/1 "2021-10-01T05:25:48Z")

</div>

K-MailerのJavascriptをダウンロードして、  
Kintoneの詳細フィールドに「メールを作成する」ボタンを表示するようにしました。

このボタンを押下し、メール作成ダイアログが表示された再、  
ステータスによって「選択中のメールセット」のデフォルト選択値を変えたいのですが、  
方法はありますでしょうか。

ステータス：作成中 → メールセット１  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;完了&nbsp; &nbsp; &nbsp;→メールセット ２

※現在、jsを少しいじってステータスをとることだけは成功しています。

（以下kmailer-XXXX.js抜粋）ーーーーーーーーーーーーー  
// 詳細画面で表示する  
// \<\<-------------------------------------------------------------------------  
kintone.events.on(‘app.record.detail.show’, function(event){  
var strstate = event.record.ステータス.value.substr(-6,6);  
if(strstate == “作成中” & event.record.txt\_reason.value != “”){  
\_kmailer\_config.on\_index = false;  
add\_app\_component(kintone.app.record.getHeaderMenuSpaceElement());  
load\_cdn();  
return event;  
}else if(strstate == “完了”){  
\_kmailer\_config.on\_index = false;  
add\_app\_component(kintone.app.record.getHeaderMenuSpaceElement());  
load\_cdn();  
return event;  
}  
});  
// -------------------------------------------------------------------------\>\>

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2229](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account2229](https://community.cybozu.dev/u/Legacy_Account2229)\
**Post date:** [2021 年 10 月 5 日午前 12:20 UTC](https://community.cybozu.dev/t/topic/5325/2 "2021-10-05T00:20:08Z")

</div>

sakata mさん

こんにちは

&nbsp;

以前に近しい質問がありましたので、参考になれば幸いです。

「テンプレート」というラジオボタンフィールドで選択された値をメールセットの初期値にするといったものです。

「メールを作成する」ボタンを押す前にメールセットを選択するドロップダウンが表示されると思いますが、そちらの値を無理やり変更します。

ステータスに応じて、★付近のコードを変更いただければ実装できるかと思います。

```
(function() {

'use strict';

var events = ['app.record.detail.show'];
kintone.events.on(events, function(event) {

let record = event.record;

let intervalId = setInterval(function() {
// [メールを作成する]ボタンが表示された場合
if (document.getElementById('mailwisePlugin-creating-mail-button')) {
// テンプレートドロップダウンを切り替える
let el = document.getElementById('mailwisePlugin-template-dropdown');
if (el.options.length > 1) {
for (let i = 0; i < el.options.length; i++) {
// ★ここでテンプレートを変更
if (el.options[i].textContent == record.テンプレート.value) {
el.options[i].selected = true;
}
}
clearInterval(intervalId);
}
}
}, 100);

});

})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2577](https://avatars.discourse-cdn.com/v4/letter/l/bcef8e/32.png) [@Legacy\_Account2577](https://community.cybozu.dev/u/Legacy_Account2577)\
**Post date:** [2021 年 10 月 5 日午前 10:47 UTC](https://community.cybozu.dev/t/topic/5325/3 "2021-10-05T10:47:23Z")

</div>

koichiさん ありがとうございます。  
上記を参考にちょっと考えてみます

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2577](https://avatars.discourse-cdn.com/v4/letter/l/bcef8e/32.png) [@Legacy\_Account2577](https://community.cybozu.dev/u/Legacy_Account2577)\
**Post date:** [2021 年 12 月 29 日午前 5:20 UTC](https://community.cybozu.dev/t/topic/5325/4 "2021-12-29T05:20:35Z")

</div>

続報＞  
上記を試したところ、「選択中のメールセット」は変わったのですが、チェンジイベントが発火せず、  
その下の「メールテンプレートの選択」がメールセットに紐づくリストになりませんでした。

ちょっと考え方を変え、いらない選択肢をすべて消し、残った選択肢を手動で選ばせる方法を取りました。  
他の方の参考になるかもしれませんので、コードを残しておきます。  
解決はしましたが、もっとスマートなやり方をご存知の方がいましたら後学のため教えてください。

※K-MailerからダウンロードしたJSファイルを修正しています。

```
（K-Mailerコード 上部省略）

// ------------------------------------------------------------------------->>
// 一覧画面で表示する
// <<-------------------------------------------------------------------------
var strtmp;
kintone.events.on('app.record.index.show', function(event){
if(event.viewName==="中止ビュー"){// ★ビューの名前を条件とする
_kmailer_config.on_index = true;
add_app_component(kintone.app.getHeaderMenuSpaceElement());
load_cdn();
strtmp="3.メールセット中止";// ★残したいメールセット名
}else{
return event;
}

});

// ------------------------------------------------------------------------->>
// モーダルウィンドウの不要なメールセットを削除する
// <<-------------------------------------------------------------------------
$(window).on("mouseup",function(e){
//メール作成ボタン押下、またはカスタマインの指定のボタン押下
if(e.target.className=="kmailer-mail-create-button"{
setTimeout(function(){
let el = $(".twelve.wide.field select")[0];
if (el.options.length > 1) {
el.options.add(new Option( "メールセットを選択してください", "" ),0)// ★初期メールセットを先頭に追加
el.options[0].selected = true;
el.options[0].disabled = "disabled" // ★選ぶとエラーになるので非活性にする
for (let i = el.options.length -1; i > 0; i--) {
// ★対象外の選択肢は削除
if (el.options[i].textContent != strtmp) {
el.options[i].remove();
}
}
}
},1000);// ★クリックして1秒後(モーダルウィンドウロード待ちのバッファ)
}
});

```
