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