再利用可能なONLYOFFICEマクロでスプレッドシートのテキストをクリーンアップする

スプレッドシートのクリーンアップを繰り返し行うには、スプレッドシートエディターで小さなJavaScriptマクロを作成し、変更したいテキスト範囲のみを対象として、まず複製したワークブックでテストしてください。以下の例では、メール列から非表示文字を削除し、余分な空白をトリミングしながら、すべての行の位置を維持します。

ONLYOFFICE マクロはエディター内で実行され、Office JavaScript API を使用します。公式ドキュメントでは、ワークフローは依然として[表示] > [マクロ]を開き、コードを記述または貼り付け、エディターで実行すると説明されています。現在のドキュメントで確認されている最近の変更では、この基本的なプロセスは変更されていません。マクロ自体は、ソフトウェアテストのレポートではなく、説明のための再利用可能なスクリプトです。ONLYOFFICEマクロのクイックスタートとスプレッドシートエディターの [表示] タブのリファレンスを参照してください。

安全なコピーを作成し、クリーンアップを定義します

ワークブックに、1行目にヘッダー、B列のB2からB500までメールアドレスが入力された連絡先リストがあるとします。インポートされた値の中には、改行、タブ、先頭と末尾の空白が含まれている場合があります。この例では、該当するテキスト列のみをクリーンアップします。コードを実行する前に、シートに合わせて範囲を調整してください。

  • ワークブックのコピーを別途保存するか、ワークシートを複製してください。出力結果を確認するまでは、元のワークブックはそのままにしておいてください。
  • 選択した範囲に、数式、スペースに依存するID、または正確な間隔を維持する必要のあるデータではなく、生のテキストが含まれていることを確認してください。
  • ヘッダー行は範囲外に含めてください。このマクロはヘッダーを検出したり、変更しても安全な列を判断したりしません。

使用範囲全体ではなく、B2:B500などの列指定範囲を使用してください。すべてのセルを無差別に消去すると、名前、住所、コード、または数式の結果が意図しない形で変更される可能性があります。

サンプルワークシートの上に「表示」タブと「マクロ」コマンドが表示された、スプレッドシートのインターフェース例。
この図解エディタビューでは、ワークシートの上に「表示」タブと「マクロ」コマンドが表示されます。作業用コピーを作成し、削除対象のテキストが含まれている列を確認した後で、このビューを開いてください。

マクロエディタを開いてスクリプトを追加する

ONLYOFFICE スプレッドシート エディターでワークブックを開きます。[表示] > [マクロ]を選択してマクロ エディターを開き、マクロを作成するか、エディター内のスターター コードを置き換えます。ONLYOFFICE マクロは JavaScript 構文と Office API を使用するため、VBA マクロとは異なります。エディターのマクロ ワークフローとサポートされている API メソッドについては、公式のマクロ入門ガイドを参照してください。

この例を貼り付けてから、B2:B500実際のテキストのみの範囲に変更してください。

(function () {
    var sheet = Api.GetActiveSheet();
    var range = sheet.GetRange("B2:B500");
    var rows = range.GetValue();
    var functions = Api.WorksheetFunction;

    for (var i = 0; i < rows.length; i++) {
        var value = rows[i][0];
        if (typeof value === "string") {
            value = functions.CLEAN(value);
            rows[i][0] = value.replace(/^\s+|\s+$/g, "")
                              .replace(/\s{2,}/g, " ");
        }
    }

    range.SetValue(rows);
})();

このマクロは、範囲を2次元配列に読み込み、文字列セルを処理し、配列を同じ範囲に書き戻します。CLEAN非表示文字を削除し、2つの正規表現置換によって、端の空白を削除し、文字列内の繰り返し空白を1つのスペースに減らします。APIリファレンスでは、GetValue範囲に対して2次元配列を返すことができ、SetValue配列を受け入れることが確認されています。GetValue 、SetValue、およびCLEANのリファレンスには、これらの呼び出しに関するドキュメントがあります。

このスクリプトは値を書き戻すため、数式を含むセルには指定しないでください。数式セルは、現在計算されている値で置き換えられる可能性があります。また、重複レコードの削除、大文字小文字の標準化、住所の配達可能性の検証、電話番号のフォーマット変更は行いません。これらは別のクリーンアップルールであり、個別に設計およびテストする必要があります。

アクティブなシートを取得し、セルの値を読み取り、値を設定するための検証済みのONLYOFFICE API呼び出しを示すマクロエディタの例と、実行ボタン。
このマクロエディタの図解では、コード領域と実行コントロールがアクティブなスプレッドシートの上に配置されています。この記事のクリーンアップスクリプトは、ドキュメントに記載されている範囲読み取りおよび書き込みメソッドを使用しており、ここでは簡略化されたAPIの例として示されています。

管理された範囲で実行してください

  1. 範囲指定をもう一度確認してください。例えば、リストが240行目で終了する場合は、数百行に及ぶ未使用の行を処理するのではなく、B2:B240を使用してください。
  2. マクロエディタで「実行」をクリックします。エディタが構文エラーを報告した場合は、範囲を変更したり、ロジックを追加したりする前に、引用符、括弧、中括弧を確認してください。
  3. ワークシートに戻り、修正が必要な値、既に正しい形式になっている値、および空白のセルなど、いくつかのセルを確認してください。

範囲を狭く設定することで、効果を理解しやすくなります。出力が正しければ、範囲を意図的に編集することで、別のシートでマクロを再利用できます。列文字や行境界が別のワークブックでも有効であるとは限らないので注意してください。

Macros コマンドが見つからない場合、またはコードが実行できない場合は、エディタでマクロが有効になっているか、ホスト アプリケーションの設定で無効になっているかを確認してください。オンライン エディタでは、管理者がマクロの有効化/無効化を制御できます。製品のスプレッドシート エディタの詳細設定には、ユーザー向けのマクロ オプションが記載されています。不明なソースからのファイルに対して自動実行を有効にしないでください。理解できるコードのみを実行してください。

名前、メールアドレス、部署、電話番号の列と、連絡先行のサンプルが表示された、参考となる連絡先ワークシート。
この図解コンタクトシートは、テキストクリーニングマクロの実用的なデータの一例を示しています。ただし、選択範囲には目的のテキストフィールドのみが含まれ、ヘッダーは除外されている必要があります。

マクロを再利用する前に結果を確認してください。

見た目だけで判断するのではなく、クリーニング後の列を元のコピーと比較してください。空白でないメールアドレスがすべて同じ行にあり、連絡先が消えておらず、正規化しようとした文字とスペース以外に違いがないことを確認してください。選択した範囲の上部、中央、および末尾付近のサンプルを確認してください。エディタで表示できる場合は、値の先頭または末尾のスペースを検索し、以前に改行や制御文字が含まれていたインポートされた値を調べてください。

また、行数と、その列を使用する依存する数式、フィルター、またはルックアップも比較してください。数式の結果が予期せず変更された場合は、編集を取り消すか、作業コピーを復元してください。マクロは、生のテキストセルに限定する必要があります。大規模なワークブックや業務上重要なワークブックの場合は、クリーンアップ済みの列全体をバックアップと比較するか、変更内容を確認できるように、まず別の出力列を使用してください。

元のメールとクリーニング済みのメールの列を同じ行数で並べて表示し、元のコピーのワークシートタブを別途設けた、例示用のスプレッドシート。
この図解シートでは、元のメール列とクリーニング済みのメール列を同じ行数で並べて表示しています。クリーニング済みの列に頼る前に、実際の値と比較してください。

清掃作業は繰り返し行えるようにする

最初の実行が正しく行われたら、エディターのマクロワークフローに従って、マクロがドキュメントとともに利用できるようにブックを保存してください。1つのブックに保存されたマクロが、すべての新しいファイルに自動的に表示されるとは限りません。繰り返しインポートする場合は、クリーンなテンプレートまたは保護されたソースコピーを保持し、マクロが想定する範囲を文書化し、シートレイアウトが変更されたときにそれを更新してください。ONLYOFFICE マクロは、決定論的なクリーンアップルールに役立ちますが、値が事実として正しいかどうか、または変更がデータセットに適しているかどうかを判断することはできません。

信頼できる手順はシンプルです。ソースのコピーを保存し、既知の範囲を対象とし、定義された変換を1回実行し、結果を比較してから、データを共有したり他の場所にインポートしたりします。

コメントを残す

ONLYOFFICE Docs Enterpriseを公式のComposeファイルと共に展開する

ONLYOFFICE Docs Enterpriseを公式のComposeファイルと共に展開する

Enterprise Docker Composeスタックを起動し、ライセンスとデータを永続化し、JWTを安全に設定し、エディターが統合準備完了であることを確認します。

再利用可能なONLYOFFICEマクロでスプレッドシートのテキストをクリーンアップする

再利用可能なONLYOFFICEマクロでスプレッドシートのテキストをクリーンアップする

ONLYOFFICEのJavaScriptマクロを使用して、指定したスプレッドシート範囲から印刷されない文字を削除し、余分なスペースをトリミングします。安全なレビューワークフローも利用可能です。

ONLYOFFICEワークスペースのデフォルトの保存場所を変更する

ONLYOFFICEワークスペースのデフォルトの保存場所を変更する

ポータルデータをディスクデフォルトからサポートされているクラウドストレージプロバイダーに移動するか、ホストボリュームマッピングを変更してDockerデータを安全に移動します。

LinuxからONLYOFFICE Document Serverを完全に削除する

LinuxからONLYOFFICE Document Serverを完全に削除する

ドキュメントサーバーがLinuxパッケージを使用しているかDockerを使用しているかを特定し、そのコンポーネントのみを削除し、共有サービスを誤って削除することなく残りのデータを確認します。

ONLYOFFICEの共同編集の遅延を解消するために、ボトルネックを見つけましょう

ONLYOFFICEの共同編集の遅延を解消するために、ボトルネックを見つけましょう

共同編集の速度低下の原因を、Dockerリソースの負荷、プロキシ接続、またはドキュメントの読み込み状況から特定し、測定結果に合致する解決策を選択してください。

Docker 内の ONLYOFFICE Docs の HTTPS を設定する

Docker 内の ONLYOFFICE Docs の HTTPS を設定する

TLSの終端場所を選択し、信頼できる証明書と秘密鍵を安全にマウントし、Dockerコンテナ化されたONLYOFFICE DocsサーバーへのHTTPSアクセスを検証します。

PHPアプリをONLYOFFICE Docsに接続して編集内容を保存する

PHPアプリをONLYOFFICE Docsに接続して編集内容を保存する

ONLYOFFICEエディタをPHPアプリケーションに組み込み、JWTで設定に署名し、編集したファイルを安全なコールバック経由で保存します。

ONLYOFFICEのスペルチェックは、選択した言語のままにしておいてください。

ONLYOFFICEのスペルチェックは、選択した言語のままにしておいてください。

文書全体または選択したテキストの校正言語を設定し、スペルチェックが有効になっていることを確認し、サーバー辞書が見つからない場合を特定します。

ドキュメントを再度開いたときに変更履歴を記録する

ドキュメントを再度開いたときに変更履歴を記録する

ONLYOFFICEドキュメント内で、すべてのユーザーに対して永続的な変更履歴の記録を有効にし、編集内容が記録されていることを確認し、この設定の制限事項を理解してください。

ONLYOFFICEのNginx 502エラーを解消するために上流を追跡する

ONLYOFFICEのNginx 502エラーを解消するために上流を追跡する

Nginx、Dockerネットワーク、またはONLYOFFICE内部サービスのいずれかが502エラーを返しているかどうかを確認し、修正されたアップストリームとヘルスチェックを検証します。