今回はGoogleドキュメントにて、行頭の空白(全角スペース・半角スペース)だけを一括で削除する方法を解説します。
GAS(Google Apps Script)にコードをコピペして、最終的にはボタンをひとつ押すだけで完了します。挙動は下記のとおり。
- ちなみに今回例として掲載している『ポラーノの広場』は、すでに著作権が切れている小説です
見出しなどの書式は維持して、文中にある空白は削除されず、あくまで行頭の空白だけが削除される仕様になっています。ご活用ください。
スクリプトの動作確認はしていますが、なんらかの条件が重なって予期せぬ挙動になる可能性が0ではありません。テキストのバックアップは取った上でご利用ください。
想定している用途
当記事の解説内容は、Webライティングの原稿に使う用途を想定しています。
GoogleドキュメントでWeb記事を納品してもらったときに、行頭に半角スペースや全角スペースが入ってしまうライターさんがいらっしゃいますが、Webライティングの原稿にスペースは不要です。
あとから「行頭のスペースは削除してください」と指示して再納品を待つのも、正直なところ面倒です。だから自分が手作業ですべて削除しようとしますが、そうなると思ったよりもめんどくさい上に、だいたい細かい部分にヌケモレが出ます。
一括で削除できれば便利ですので、GASのコードで実装しました。
Googleドキュメントで空白・スペースを一括削除する方法
GASのコードは下記のとおりです。
function onOpen() {
var ui = DocumentApp.getUi();
ui.createMenu('カスタムメニュー')
.addItem('空白を削除する', 'removeSpaces')
.addToUi();
}
function removeSpaces() {
var body = DocumentApp.getActiveDocument().getBody();
var paragraphs = body.getParagraphs();
for (var i = 0; i < paragraphs.length; i++) {
var text = paragraphs[i].editAsText();
var textString = text.getText();
var newTextString = textString.replace(/^[ ]+/gm, "");
if (newTextString !== textString) {
text.setText(newTextString);
}
}
}
GASのプロジェクトにコピペして実行すると、メニューバーに「カスタムメニュー」という項目が出現して、その中に「空白を削除する」という項目が出てきます。
「空白を削除する」を押すと、ドキュメント内の行頭スペースがすべてトルツメされます。
以下、手順をお伝えしておきます。
1. GASのエディタを開く
まずはスペースを削除したいGoogleドキュメントを開いて、GASのエディタへと移動します。
メニューバー「拡張機能→Apps Script」と進んでください。
下記のとおり空白のGASプロジェクトが開きます。
2. コードをコピペして保存
開いたGASのプロジェクトにもともと書かれている下記のコードは削除します。
function myFunction() {
}
空白にしたエディタに、下記のコードをコピペしてください。
function onOpen() {
var ui = DocumentApp.getUi();
ui.createMenu('カスタムメニュー')
.addItem('空白を削除する', 'removeSpaces')
.addToUi();
}
function removeSpaces() {
var body = DocumentApp.getActiveDocument().getBody();
var paragraphs = body.getParagraphs();
for (var i = 0; i < paragraphs.length; i++) {
var text = paragraphs[i].editAsText();
var textString = text.getText();
var newTextString = textString.replace(/^[ ]+/gm, "");
if (newTextString !== textString) {
text.setText(newTextString);
}
}
}
下記のような状態になれば、保存を押します。
なおプロジェクト名は「無題のプロジェクト」のままでも、固有の名前をつけてもなんでも構いません。
3. 実行を押してアクセス権限を承認
保存したら「実行」を押します。すると、そのプロジェクトの初回実行時のみアクセス権限の承認が求められます。
「権限を確認」を押すと、下記の画面へ。
自分のアドレスが表示されていますので、クリックすると下記の画面へ。
アラートが出ていて、なんとなく怪しさを感じますが「詳細」を開きます。
要するに「Googleが安全性を確認していないプログラムが走る」という意味合いで、安全ではないと伝えてきています。気にせず「無題のプロジェクト(安全ではないページ)に移動」を押してください。
(もしプロジェクト名を変更していたら、そのプロジェクト名の表示になっています)
すると下記の画面に移りますので「許可」を押します。
すると実行ログに「実行開始」「実行完了」と表示されます。
これで準備完了です。
4. Googleドキュメントに戻って「空白を削除する」を押す
その後Googleドキュメントに戻ると、メニューバーに「カスタムメニュー→空白を削除する」が表示されています。
「空白を削除する」を押すと、行頭の全角・半角スペースだけが削除されます。
行頭だけでなく全ての空白を削除する方法
行頭だけではなく、文中も含めてすべての全角スペース・半角スペースを削除したい場合は、下記のコードになります。
function onOpen() {
var ui = DocumentApp.getUi();
ui.createMenu('カスタムメニュー')
.addItem('空白を削除する', 'removeSpaces')
.addToUi();
}
function removeSpaces() {
var body = DocumentApp.getActiveDocument().getBody();
var paragraphs = body.getParagraphs();
for (var i = 0; i < paragraphs.length; i++) {
var text = paragraphs[i].editAsText();
var textString = text.getText();
var newTextString = textString.replace(/[ ]/g, "");
if (newTextString !== textString) {
text.setText(newTextString);
}
}
}
修正対象を検索するときの条件である正規表現(/^[ ]+/gm, “”)を(/[ ]/g, “”)に変更したコードです。(もともとは行頭スペースのみを検索していましたが、すべてのスペースを検索するように変更しています。)
必要に応じて使用してください。
まとめ
毎回あらたなファイルで開くと、その度にアクセス承認作業が発生するのが少々面倒かと思います。
このプログラムが使えるドキュメントをひとつ用意しておいて、必要なときに記事テキストを丸々コピペして実行する形がスムーズかもしれません。お好きなように活用してください。
ちなみに今回のスクリプトは、すべてChatgptで作成しました。最初はエラーだらけのコードが吐き出されましたが、Chatgptと対話を重ねながら修正させて使えるようにしています。
こう言った細々した作業は、プログラムでなんとかしていきたいですね。