【Google Apps Script】セルの内容をコピペできるように、メッセージダイアログに改行して表示する【スプレッドシート】

Googleスプレッドシートのセル内容が複数行で、かつダブルクオーテーションがある場合

Googleスプレッドシートのセル内容が複数行で、かつダブルクオーテーションがある場合、セルをコピーするとダブルクオーテーションが先頭と末尾、および重複して表示されます。

例)

<div class="text">aaa</div>
<div class="text">bbb</div>

これをクリップボードにコピーすると、下記のようになります。

"<div class=""text"">aaa</div>
<div class=""text"">aaa</div>"

これは、セルをコピーしてテキストで貼り付ける場合は、CSVの仕様に準じていて

・複数行の場合は先頭と末尾にダブルクォーテーションが付く
・セルの値にダブルクォーテーションが含まれる場合、ダブルクォーテーションを2重にして表示する(ダブルクォーテーションのエスケープ)

という仕様になっています。

参考:CSVファイルの一般的書式 (RFC4180 日本語訳)

http://www.kasai.fm/wiki/rfc4180jp

特にHTMLコードなどは、複数行でかつダブルクオーテーションをもちいるので、コードの生成では毎回テキストエディタで整形する必要があります。(先頭と末尾のダブルクオーテーションを削除、またはダブルクオーテーションの重複を単一に変換)

メッセージダイアログにセル内容を表示させてコピペする

シートを用意します。

ボタンを作成します。

Google Apps Script で、下記を実装します。

  1. セルの内容を取得
  2. メッセージダイアログに表示

スクリプトエディタを開きます。

下記コードを作成します。

var SHEET = "シート1";

function myFunction() {
  /* セルの値を取得 */
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET);
  var codePC = sheet.getRange("A2").getValue();
  
  /* セルの値を改行して表示 */
  codePC = codePC.replace(/\n/g, "\\n"); 
  Browser.msgBox('コードを選択して Ctrl+Cでコピーして下さい。',codePC, Browser.Buttons.OK_CANCEL);
  
}

まずシートを指定し、セルA2のデータを取得します。

次に、メッセージダイアログに出力する際、データの内容の改行コードを変換します。

  codePC = codePC.replace(/\n/g, "\\n"); 

作成したボタンに、スクリプトを割り当てます。

これで準備完了です。実際に作成したスクリプトを、ボタンのクリックで実行します。

メッセージ部分を選択して、コピーが可能になりました。

下記からダウンロードできます。https://docs.google.com/spreadsheets/d/e/2PACX-1vRVfL2ETVxJmuj24eAxMsguacjWiK_ip4k8SPpEjApgNIfAd0Mhv7NgwIavkCN5Idpjik9UbeCWpbCg/pubhtml

この記事のご感想やコメントはこちら

メールアドレスが公開されることはありません。 が付いている欄は必須項目です