earthpg:GAS専門のプログラミングスクール

GASではクリップボード操作できない?その理由と代替手段を解説!

GASでクリップボード操作とかできないかな?ボタン押したらコピー!みたいなの作りたいんだけど…
猫男
猫男
catman
catman
ふふふ、そんなときは俺の必殺技…eyesビームの出番だ!くらえっ!

GAS × クリップボードはどう使う?

実は、Google Apps Script(GAS)単体ではクリップボード操作はできません

クリップボードの読み書きは、JavaScriptの「ブラウザ側」APIでしかできないんです。

✅ GAS → サーバー側の処理
✅ クリップボード操作 → クライアント側(HTML + JavaScript)

ってことで、

GASのWebアプリ(HTML Service)と連携してクリップボードを操作する仕組みを作ります!

コピーボタン付きHTMLをGASで生成!

[eyesビーム発射エフェクト]
💥 (°Д° )ノ゙===≡≡≡ eyesビーーーーーム!!

 function doGet() {
 return HtmlService.createHtmlOutput(
`<!DOCTYPE html>
 <html>
 <body>
 <p id="text">これはコピーしたいテキストです。</p>
 <button onclick="copyText()">コピーする</button>
 <script> function copyText() {
 const text = document.getElementById('text').innerText;
 navigator.clipboard.writeText(text) .then(() => alert('コピーしました!')) .catch(err => alert('コピーに失敗しました: ' + err));
 } </script> 
</body>
</html>`
); } 

✅ doGet() 関数を Webアプリとしてデプロイすれば、ボタンでクリップボードにコピーできます!

うおっ、目からコードが…!スクリプトが勝手にできた…!
猫男
猫男
catman
catman
ふ…eyesビームを浴びれば、必要なコードは一瞬で現れるのさ。

関連機能まとめ:GASとクリップボードの関係

目的 対応方法
GASでクリップボードにコピー HTML + JavaScriptで対応
クリップボードから貼り付け navigator.clipboard.readText() を使う
コピーボタン付きUIを作る GASのHTMLサービスと組み合わせ
GAS内で保存する コピーされた内容を google.script.run でGASに送信して保存

おまけ:クリップボードから貼り付けたいとき

以下のようにJavaScriptで読み取り可能です:

 navigator.clipboard.readText().then(text => { alert(\"取得した内容:\" + text); }); 

※ こちらもHTMLサービス内でのみ利用可能です。

まとめ:GAS × クリップボードの使い方

  • GAS単体ではクリップボード操作はできない
  • HTML+JavaScriptと組み合わせてコピー・貼り付けを実現
  • ボタン付きUIでユーザーに優しいスクリプトを作れる!
これでWebアプリにコピーボタンも追加できるから便利になりそう!
猫男
猫男
catman
catman
その通り!GASとeyesビームがあれば、クリップボードも思いのままだ!