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スプレッドシートに貼り付けると、次のように先行スペースがすべて削除されます。
2. Googleスプレッドシート先行スペースを維持する方法
エディタで、各行の最初の文字に「(二重引用符(=一重引用符)、シングルクォート)を追加してGoogleスプレッドシートに貼り付けると、先行スペースは削除されません。
たとえば、Notepad++に次のようなテキストがある場合、
最初の行、最初の列にカーソルを置いて、 Alt + C キーを押すか、「編集>サーマルモード… 「メニューを実行して」(一重引用符(=二重引用符)、シングルクォーテーション)文字を入力した後 Enter キーを押すと、次のように各行の最初の文字として追加されます。
上記のテキストをコピーしてGoogleスプレッドシートに貼り付けると、次のように先行スペースがうまく保持されます。
一重引用符は見ただけでは見えませんが、セルをクリックすると上部の入力行に表示されます。
ただし、この状態でGoogleスプレッドシートのTextをコピーして他の場所に貼り付けても、単一引用符は除外され、元のテキストのように先行スペースを含めて貼り付けられます。一重引用符は、先行スペースを維持する用途以外に他の問題はないようです。
しばらくこの問題が気になってグーグルしたのにも見つからないが、ふとエクセルでテキスト書式を指定する一重引用符を追加してみるとどうかして試してみたが問題がきれいに解決された。
ちなみに、DBeaverでは次の手順で実行すればよい。
- Alt + Shift + A キーで列編集モードに切り替える
- Shift + 矢印 キーを使用して最初の列を選択し、単一引用符を入力した後
- 再び Alt + Shift + Aを押して一般編集モードに切り替える
- テキストをコピーしてGoogleスプレッドシートに貼り付ける
この方法は、列モード編集をサポートするテキストエディタをすべて適用できます。エディタによってショートカットまたはメニュー機能が少しずつ異なる場合がありますが、最初の列に一重引用符を追加できます。
SQL、PythonなどのソースコードをGoogleスプレッドシートに入力しても、インデントを維持する方法について説明しました。他の方法があればコメントで教えてください。
* Summary in English: How to keep leading space in Google Spreadsheets.