他アプリのデータからリンク先を作成したボタン設置について

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

第3回 レコード詳細にもボタンを設置しよう!

https://cybozudev.zendesk.com/hc/ja/articles/201952870-%E7%AC%AC3%E5%9B%9E-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E8%A9%B3%E7%B4%B0%E3%81%AB%E3%82%82%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E8%A8%AD%E7%BD%AE%E3%81%97%E3%82%88%E3%81%86-

を参考にして、下記のプログラムを作成しようとしました。

流れとしましては、

①他のアプリよりリンク先のメールアドレスを取得

②ボタンのリンクアドレスに追加

③票再画面の追加編集と同じエリアに表示

④ボタンを押すとメールクライアントが起動する。

を考えております。 

(function () {
“use strict”;

kintone.events.on(‘app.record.detail.show’, function (event) {

//ボタンの作成&設定
if (document.getElementById (‘my_index_button’) != ‘null’) {
return;
}
var myIndexButton = document.createElement(‘button’);
myIndexButton.id = ‘my_index_button’;
myIndexButton.innerHTML = ‘報告メール送信’;

//レコード詳細画面右側の空白部分の要素を取得
var el = kintone.app.record.getHeaderMenuSpaceElement();

//詳細画面のレコード内容の取得
…省略

//メール本文
var honbun = elNoday + elTtl + elCate + elUpday;

//タイトル
var title = elNoday + elTtl + elCate + ;

//メーリングリストの取得
var MAIL = “”;
var params = {
‘app’: XX,
‘query’: ‘Drop_Apri in("業務日誌") and Drop_Cate in("’ + elCate + ‘")’,
‘fields’: [‘Drop_Cate’, ‘Line_Mail’]
};

return kintone.api(‘/k/v1/records’, ‘GET’, params).then(function(resp) {
// レコードを取得する
var resbuf = resp.records;
var resi = resbuf.length;
for(var i = 0; i <resi; i++) {
MAIL = MAIL + resbuf[i].Line_Mail.value;
}
alert(MAIL);
//メール送信機能の追加⇒ボタンに<a>属性を追加付与
var link = document.createElement(‘a’);
link.href=‘mailto:’+MAIL+‘?subject=’+title+‘&body=’+honbun[0]; link.id = ‘Send’;link.name = ‘mailSend’;
//要素の追加
el.appendChild(link);
link.appendChild(myIndexButton);
// ボタンクリック時の処理
myIndexButton.onclick = function() {
if (honbun[1].length > 10) {
alert(honbun[1]);
}
}; //onclick

//レコード詳細画面右側の空白部分の要素を取得
el.appendChild(myIndexButton);
return event;
}, function(resp) {
record.Drop_Cate.error = ‘そのカテゴリは存在しません’;
return event;
});
}); //kintone.events.on
})(); //function

ここまでは作成できたのですが、どうもボタンが表示されません。

やはり、kintone.api内にonclickなどを記述すべきではないでしょうか?

よろしくお願い致します。

 

ナカゴウユイエさん

 

ボタンを設置するのと、要素にイベントをアタッチするのはそれぞれに設定するので、

> やはり、kintone.api内にonclickなどを記述すべきではないでしょうか?

ということはないと思います。

 

問題っぽいのはa要素にbutton要素を追加しようとしているところとまだ途中だと思いますが、クリックイベントの中身ではないでしょうか。

 

ボタンクリックで初期値入りのメーラが立ち上がるというのが意図だと思いますので、・・・button要素を設置して、クリックイベントで location.href に飛ばしたいリンクを指定すると良いと思います。「button」、「click」、「location.href」あたりでググれば一般的なJavaScriptの話として色々出てくると思います。

Ryu Yamashita さん

ご教授ありがとうございます。

>ボタンクリックで初期値入りのメーラが立ち上がるというのが意図だと思いますので、・・

はい、その通りです。メーラーを立ち上げ、KINTONEの内容を初期値としてセットすることを意図しています。

javascriptは本当に聞きかじった程度ですので、KINTONE APIと組み合わせた時に、どうすればいいのかが良く解りませんでした。

>button要素を設置して、クリックイベントで location.href に飛ばしたいリンクを指定すると良いと思います。

この答えが聞きたかったんです!!

ありがとうございます!!