Googleスプレッドシートの前のスペースを削除するトラブルシューティング方法

Googleスプレッドシートの先行スペースを含むテキストを貼り付けると、先行スペースが削除されるという問題があります。

インデントがなければ可読性のあるSQL構文などをGoogleスプレッドシートに頻繁に貼り付けるが、インデントした先行スペースがすべて除去され、読みやすさが悪くなる現象だ。

1. Googleスプレッドシートの前のスペースを削除する問題

次のSQLをコピーして、

SELECT x, y
  FROM (SELECT 1 AS x, true AS y UNION ALL
        SELECT 9, true UNION ALL
        SELECT NULL, false)
 ORDER BY x NULLS LAST;

+------+-------+
| x    | y     |
+------+-------+
| 1    | true  |
| 9    | true  |
| NULL | false |
+------+-------+

(出典: https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax?hl=ko#order_by_clause)

Googleスプレッドシートに貼り付けると、次のように先行スペースがすべて削除されます。

구글 스프레드시트에 붙여넣기한 SQL: 선행 공백 제거됨
Googleスプレッドシートに貼り付けたSQL:先行スペースを削除しました

2. Googleスプレッドシート先行スペースを維持する方法

エディタで、各行の最初の文字に「(二重引用符(=一重引用符)、シングルクォート)を追加してGoogleスプレッドシートに貼り付けると、先行スペースは削除されません。

たとえば、Notepad++に次のようなテキストがある場合、

Notepad++ SQL Text 예시
Notepad++ SQL Textの例

最初の行、最初の列にカーソルを置いて、 Alt + C キーを押すか、「編集>サーマルモード… 「メニューを実行して」(一重引用符(=二重引用符)、シングルクォーテーション)文字を入力した後 Enter キーを押すと、次のように各行の最初の文字として追加されます。

Notepad++ SQL Text: 첫번째 열에 작은따옴표 추가 예시
Notepad++ SQL Text: 最初の列に一重引用符を追加する例

上記のテキストをコピーしてGoogleスプレッドシートに貼り付けると、次のように先行スペースがうまく保持されます。

구글 스프레드시트에 붙여넣기한 SQL: 선행 공백 유지됨
Googleスプレッドシートに貼り付けたSQL:先行スペースを保持する

一重引用符は見ただけでは見えませんが、セルをクリックすると上部の入力行に表示されます。

구글 스프레드시트에 붙여넣기한 SQL: 입력창에는 작은따옴표가 나타남
Googleスプレッドシートに貼り付けたSQL:入力ウィンドウに一重引用符が表示される

ただし、この状態でGoogleスプレッドシートのTextをコピーして他の場所に貼り付けても、単一引用符は除外され、元のテキストのように先行スペースを含めて貼り付けられます。一重引用符は、先行スペースを維持する用途以外に他の問題はないようです。

しばらくこの問題が気になってグーグルしたのにも見つからないが、ふとエクセルでテキスト書式を指定する一重引用符を追加してみるとどうかして試してみたが問題がきれいに解決された。

ちなみに、DBeaverでは次の手順で実行すればよい。

  1. Alt + Shift + A キーで列編集モードに切り替える
  2. Shift + 矢印 キーを使用して最初の列を選択し、単一引用符を入力した後
  3. 再び Alt + Shift + Aを押して一般編集モードに切り替える
  4. テキストをコピーしてGoogleスプレッドシートに貼り付ける

この方法は、列モード編集をサポートするテキストエディタをすべて適用できます。エディタによってショートカットまたはメニュー機能が少しずつ異なる場合がありますが、最初の列に一重引用符を追加できます。

SQL、PythonなどのソースコードをGoogleスプレッドシートに入力しても、インデントを維持する方法について説明しました。他の方法があればコメントで教えてください。

* Summary in English: How to keep leading space in Google Spreadsheets.

コメントを残す

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

ja日本語