SpreadJS製品ヘルプ
クリップボード変更時のイベント
イベントに関するサンプルコード > クリップボード変更時のイベント

クリップボード変更に対して、ClipboardChangedClipboardChangingClipboardPastedClipboardPastingの4つのイベントを使用できます。ClipboardChangedイベントはクリップボードの変更が起こったとき、およびClipboardChangingイベントはクリップボードが変更されるときに発生します。また、ClipboardPastedイベントはユーザーがクリップボードから貼り付けたとき、およびClipboardPastingイベントはユーザーがクリップボードから貼り付けるときに発生します。これらのイベントを使用すると、ExcelからSpreadへ、ワークシート内およびワークシート間で、テキスト、セルのデータ、画像、チャート、図形、スライサー、カスタムフローティングオブジェクトをコピーおよび貼り付けることができます。

現在、SpreadJSからExcelへのテキスト以外のコピーと切り取りの操作はサポートされていません。

コードの使用

次のサンプルコードは、さまざまなクリップボードイベントを使用します。

Javascript
コードのコピー
<script>
    $(document).ready(function () {
        // Spreadを初期化します。
        var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 });
        // アクティブシートを取得します。
        var activeSheet = spread.getActiveSheet();

        // allowCopyPasteExcelStyleをtrueに設定します。
        spread.options.allowCopyPasteExcelStyle = true;

        // クリップボードイベントをバインドします。
        activeSheet.bind(GC.Spread.Sheets.Events.ClipboardChanged, function (sender, args) {
            console.log("ClipboardChanged.");
        });

        activeSheet.bind(GC.Spread.Sheets.Events.ClipboardChanging, function (sender, args) {
            console.log("ClipboardChanging");
        });

        activeSheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, function (sender, args) {
            console.log("ClipboardPasted");
        });

        activeSheet.bind(GC.Spread.Sheets.Events.ClipboardPasting, function (sender, args) {
            console.log("ClipboardPasting");
        });
    });
</script>

使用例

次のケースではクリップボードイベントを使用できます。

ExcelからSpreadJSへのコピーと貼り付け

例えば、Excelに画像、チャート、図形などの複数のオブジェクトがあり、画像を除いてすべてのオブジェクトをコピーしてスプレッドシートに貼り付けたいとします。このため、ClipboardPastingイベントの「cancel」パラメータはtrueに設定されます。

また、画像、チャート、図形などのオブジェクトをExcelからスプレッドシートにコピーおよび貼り付けるには、「allowCopyPasteExcelStyle」プロパティをtrueに設定する必要があります。 ExcelオブジェクトをSpreadにコピーする方法については、このトピックを参照してください。

次のサンプルコードは、ExcelからSpreadに画像をコピーしないように設定します。

Javascript
コードのコピー
<script>
    $(document).ready(function () {
        // Spreadを初期化します。
        var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 });
        // アクティブシートを取得します。
        var activeSheet = spread.getActiveSheet();

        // allowCopyPasteExcelStyleをtrueに設定します。
        spread.options.allowCopyPasteExcelStyle = true;

        // 画像を追加します。
        activeSheet.pictures.add("f2", "Capture.PNG", 100, 60, 200, 100);

        // このコードは、ExcelからSpreadJSへの画像のコピーを防ぎます。
        spread.bind(GC.Spread.Sheets.Events.ClipboardPasting, (e, args) => {
            if ((args.pasteData && args.pasteData.image)) {
                args.cancel = true;
            }
        });
    });
</script>

ワークシート内のコピーと貼り付け

例えば、ワークシート内に画像、チャート、図形などの複数のオブジェクトがあり、画像を除いてすべてのフローティングオブジェクトをコピーして同じワークシート内に貼り付けたいとします。クリップボードイベントの「objects」パラメータを使用して、テキスト、セルのデータ、画像、カスタムフローティングオブジェクト、スライサー、チャート、および図形をコピーと貼り付けることができます。次のサンプルコードは、「cancel」パラメータをtrueに設定して、ワークシート内に画像をコピーしないように設定します。

Javascript
コードのコピー
<script>
    $(document).ready(function () {
        // Spreadを初期化します。
        var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 });
        // アクティブシートを取得します。
        var activeSheet = spread.getActiveSheet();

        // allowCopyPasteExcelStyleをtrueに設定します。
        spread.options.allowCopyPasteExcelStyle = true;

        spread.bind(GC.Spread.Sheets.Events.ClipboardPasting, (e, args) => {
            // このコードは、内部のフローティング要素のコピー/貼り付けを防止します。//このコードは、外部の画像の貼り付けを防止します。
            if ((args.objects && args.objects.length > 0) || (args.pasteData && args.pasteData.image)) {
                // alert("テスト");
                args.cancel = true;
            }
        });
    });
</script>