ONLYOFFICEマクロで余分なスペースを取り除く方法

テキスト編集の領域では、不要なスペースを削除する効率的なマクロが不可欠です。それは生産性を高め、ワークフローを合理化します。このブログ記事では、選択したテキストから余分なスペースを削除するように設計されたONLYOFFICEマクロの作成方法をご紹介します。

<img class="aligncenter wp-image-71622" src="https://static-blog.onlyoffice.com/wp-content/uploads/2023/10/04140443/spaces.png" alt="Remove extra spaces with ONLYOFFICE macro" width="736" height="371" />
<h2><!--more--></h2>
<h2><strong>マクロの構築</strong></h2>
まず、アクティブなドキュメントにアクセスし、選択されたコンテンツをキャプチャします：
<pre class="theme:github font:monospace lang:js decode:true ">const oDocument = Api.GetDocument();
const oRange = oDocument.GetRangeBySelect();
const rawText = oRange.GetText();
</pre>
次に、選択したテキストを削除します。後で、余分な空白のない整形されたテキストに置き換えられます：
<pre class="theme:github font:monospace lang:js decode:true ">oRange.Delete();</pre>
改行文字に基づいて、rawTextを段落の配列に分割します。段落配列の各要素は、元のテキストの段落を表します：
<pre class="theme:github font:monospace lang:js decode:true ">// Split the original word into an array of paragraphs based on newline characters
const paragraphs = rawText.split('\n');
</pre>
ループは次に、段落配列の各段落を繰り返し処理し、連続する空白を半角空白に置き換えることで段落を削除します。削除された段落は、cleanedParagraphs 配列に格納されます：
<pre class="theme:github font:monospace lang:js decode:true">const cleanedParagraphs = [];
// Clean each paragraph and store it in the cleanedParagraphs array
for (const paragraph of paragraphs) {
    // Use a regular expression to replace consecutive whitespaces with a single space
    const cleanedParagraph = paragraph.replace(/\s+/g, ' ');
    cleanedParagraphs.push(cleanedParagraph);
}</pre>
各段落をクリーニングした後、join(' \n') メソッドを使用して、クリーニングされた段落を 1 つの文字列に結合します。テキストを文書に挿入する場合、適切な段落区切りのある単一の文字列を提供する必要があるため、このステップは非常に重要です：
<pre class="theme:github font:monospace lang:js decode:true ">// Join the cleaned paragraphs back together with newline characters
const cleanedText = cleanedParagraphs.join('\n');</pre>
最後に、新しい段落（oParagraph）を作成し、cleanedTextを文書に挿入します。このcleanedTextには、クリーニングされたすべての段落が、元の段落構造を保持するための改行文字とともに、1つの文字列にまとめられています：
<pre class="theme:github font:monospace lang:js decode:true ">// Insert the cleanedText with original paragraph structure
const oParagraph = Api.CreateParagraph();
oParagraph.AddText(cleanedText);
oDocument.InsertContent([oParagraph], { "KeepTextOnly": true });
</pre>
マクロコード全体は以下のとおりになります：
<pre class="theme:github font:monospace lang:js decode:true">(function()
{
 const oDocument = Api.GetDocument();
const oRange = oDocument.GetRangeBySelect();
const rawText = oRange.GetText();
oRange.Delete();

// Split the original word into an array of paragraphs based on newline characters
const paragraphs = rawText.split('\n');

// Create an array to store cleaned paragraphs
const cleanedParagraphs = [];

// Clean each paragraph and store it in the cleanedParagraphs array
for (const paragraph of paragraphs) {
    // Use a regular expression to replace consecutive whitespaces with a single space
    const cleanedParagraph = paragraph.replace(/\s+/g, ' ');
    cleanedParagraphs.push(cleanedParagraph);
}

// Join the cleaned paragraphs back together with newline characters
const cleanedText = cleanedParagraphs.join('\n');

// Insert the cleanedText with original paragraph structure
const oParagraph = Api.CreateParagraph();
oParagraph.AddText(cleanedText);
oDocument.InsertContent([oParagraph], { "KeepTextOnly": true });   
})();</pre>
マクロを実行し、どのように機能するか見てみましょう！
<div style="text-align: center;"><iframe width="560" height="315" src="https://www.youtube.com/embed/n0Kn-2w5SYo?si=oyv9j-qoz-YzlKu8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen"></iframe></div>
このマクロがあなたのツールキットの貴重な資産となり、生産性を新たな高みへと合理化することを願っています。ONLYOFFICEマクロは、生産性向上の可能性を解き放ち、効率的で自動化されたソリューションを提供します。

マクロ作成に踏み出す一方で、ONLYOFFICE APIによって利用可能になる可能性を見逃してはいけません。ご質問や革新的なアイディアがありましたら、遠慮なくコメントや私たちにご連絡ください。
<div class="useful-links">
<h3><strong>お役立ちリンク</strong></h3>
<a href="https://www.onlyoffice.com/blog/ja/2023/08/generate-and-insert-word-definitions-with-onlyoffice-macro?utm_source=qiita&amp;utm_medium=article+&amp;utm_id=remove_extra_spaces_macro" target="_blank" rel="noopener"><u>ONLYOFFICEマクロで単語の定義を生成して挿入する方法</u></a>

<a href="https://www.onlyoffice.com/blog/ja/2023/07/onlyoffice-24?utm_source=qiita&amp;utm_medium=article+&amp;utm_id=+remove_extra_spaces_macro" target="_blank" rel="noopener"><u>ONLYOFFICEマクロでウェブサイトの詳細を取得する方法</u></a>

<a href="https://api.onlyoffice.com/docbuilder/textdocumentapi?utm_source=qiita&amp;utm_medium=article+&amp;utm_id=remove_extra_spaces_macro" target="_blank" rel="noopener"><u>ONLYOFFICEのAPIドキュメント</u></a>

<a href="https://api.onlyoffice.com/plugin/macrosamples/?utm_source=qiita&amp;utm_medium=article+&amp;utm_id=remove_extra_spaces_macro" target="_blank" rel="noopener"><u>マクロのサンプル</u></a>

<a href="https://github.com/ONLYOFFICE" target="_blank" rel="noopener"><u>ONLYOFFICEのGitHubページ</u></a>

<a href="https://www.youtube.com/playlist?list=PLCF48HEKMOYNBygGjr9lSw3PLpVXQ6s_t" target="_blank" rel="noopener"><u>ONLYOFFICEドキュメントのマクロ【無料講座】</u></a>

</div>