[Dynamics CRM 2016]JavaScriptでクリップボードにテキストをコピーする
2016/08/24 Kyo1.Inoue
Webリソースでフォームにボタンを配置し、JavaScriptでクリップボードにテキストをコピーしたいと思います。
当初はclipboard.jsを使用しようと思いましたが、
固定文字列、または、input type=”text”のタグが必要になってしまうため、
別の方法でコピーします。
1.1. Web Resourceとなるhtmlを定義します。
htmlファイルの文字コードはUTF-8にしてください。
htmlボタンを配置して、Onclick時に3フィールドをタブ区切りにしてクリップボードコピーしています。
new_name、new_copy1、new_copy2のフィールドがフォームに配置されています。
[htmlファイルの内容]
[code]<html>
<head>
<title></title>
<script type="text/javascript">
// 右クリック抑止
document.oncontextmenu = function () {
return false;
}
//=========================================
// クリップボード設定処理
//=========================================
function copyClipboard() {
var strDelimiterTAB
= parent.Xrm.Page.data.entity.attributes.get('new_name').getValue()
+ "t"
+ parent.Xrm.Page.data.entity.attributes.get('new_copy1').getValue()
+ "t"
+ parent.Xrm.Page.data.entity.attributes.get('new_copy2').getValue();
window.clipboardData.setData ("Text", strDelimiterTAB );
}
</script>
<meta charset="utf-8">
</head>
<body topmargin="0" leftmargin="0" style="white-space: pre;" background-color="#DFE2E8" marginheight="0" marginwidth="0"><button onclick="copyClipboard();">クリップボードにコピー</button></body>
</html>
[/code]
1.2. .htmlファイルを作成したら、Webリソースとして登録します。
設定⇒カスタマイズを開き、Webリソースで新規を押下して追加します。

1.3. Webリソースを登録したら、フォームに配置し、保存して公開します。
1行、スクロールなし、境界線なしで配置しました。

1.4. 配置した「クリップボードにコピー」ボタンを押下し、
名前、コピーテキスト項目1、コピー数値項目2をタブ区切りでクリップボードにコピーします。

1.5. コピーした内容をテキストファイルにペーストすると、うまくタブ区切りでコピーできています。

テキストボックスにコピーする内容を取得して、クリップボードに取得すると確認と編集が出来て便利かもしれませんね


