ONLYOFFICEマクロを使用して、特定のキーワードの後にスプレッドシートのデータをトリミングする方法

2024年06月07日著者:Denis

先月、一致する単語が検出されたときにスプレッドシートのセルの内容を削除するマクロを一緒に開発しました。今回のブログポストでは、同様のロジックを使って、特定の単語以降のセルの内容をすべて削除するマクロを作成していきます。

How to trim spreadsheet data after a specific keyword using ONLYOFFICE macro

マクロの構築

    const oWorksheet = Api.GetActiveSheet();
    const oRange = oWorksheet.GetSelection();
    const wordReference = "apple";

まず、アクティブなワークシートと選択範囲を変数 oWorksheetoRange に取得し、検索したい単語を変数 wordReference に設定します。

oRange.ForEach(function (range) {
        const cellValue = oWorksheet.GetRange(range).GetValue().trim();
        const containsIndex = containsWord(cellValue, wordReference);

次に、forEachループを使って選択範囲のセルを繰り返し、セルの値をcellValue変数に格納し、cellValueと単語をcontainsWordメソッドに渡します。

if (containsIndex !== -1) {
            const newValue = cellValue.substring(
                0,
                containsIndex + wordReference.length
            );
            oWorksheet.GetRange(range).SetValue(newValue);
        } else {
            console.log(
                "No instance found in the selection where deletion is applicable."
            );
        }

‘(containsIndex !== -1)’条件は、セル値の中に指定された単語があるかどうかをチェックします。単語が見つかった場合、セル値は元の値の部分文字列に更新され、実質的に指定された単語以降はすべて削除されます。

    function containsWord(sentence, word) {
        const trimmedSentence = sentence.trim();
        const trimmedWord = word.trim();
        const index = trimmedSentence
            .toLowerCase()
            .indexOf(trimmedWord.toLowerCase());
        return index;
    }

containsWordメソッドはこのマクロの核となる関数です。セルの値と検索する単語をパラメータとして受け取ります。セルの内容内の単語のインデックスを見つけることによって、その単語がセル内に存在するかどうかをチェックします。この関数は単語が始まるインデックスを返し、単語が見つからない場合は ‘-1’ を返します。

マクロコード全体

マクロコード全体は下記のとおりです。

(function () {
    const oWorksheet = Api.GetActiveSheet();
    const oRange = oWorksheet.GetSelection();
    const wordReference = "apple";

    oRange.ForEach(function (range) {
        const cellValue = oWorksheet.GetRange(range).GetValue().trim();
        const containsIndex = containsWord(cellValue, wordReference);

        if (containsIndex !== -1) {
            const newValue = cellValue.substring(
                0,
                containsIndex + wordReference.length
            );
            oWorksheet.GetRange(range).SetValue(newValue);
        } else {
            console.log(
                "No instance found in the selection where deletion is applicable."
            );
        }
    });

    function containsWord(sentence, word) {
        const trimmedSentence = sentence.trim();
        const trimmedWord = word.trim();
        const index = trimmedSentence
            .toLowerCase()
            .indexOf(trimmedWord.toLowerCase());
        return index;
    }
})();

では、マクロの動作を見てみましょう。

以上です!この便利なマクロは、手間をかけずにセルの値をトリミングし、スプレッドシートの使い勝手を向上させるように設計されています。デスクトップとウェブエディタの両方をサポートするこのマクロは、あなたのスプレッドシートツールキットの明白な選択肢となります。

ONLYOFFICE APIのパワーを活用するチャンスをお見逃しなく。私たちのAPIメソッドの豊富なライブラリは、あなたのアイデアを現実に変える鍵です。ご質問や革新的なコンセプトがあれば、ぜひ私たちと共有してください