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

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

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

ステータス:作成中 → メールセット1
                     完了     →メールセット 2

※現在、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;
}
});
// ------------------------------------------------------------------------->>

sakata mさん

こんにちは

 

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

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

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

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

(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);

});

})();

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

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

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

※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秒後(モーダルウィンドウロード待ちのバッファ)
}
});