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 で、下記を実装します。
- セルの内容を取得
- メッセージダイアログに表示
スクリプトエディタを開きます。
下記コードを作成します。
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