ONLYOFFICEマクロを使ってスプレッドシートの特定の単語を削除する方法

2024年05月14日著者:Denis

スプレッドシートを使用していると、シートのセル全体にわたって特定の単語を検索し、そのインスタンスを修正または削除するシナリオに遭遇することがよくあります。このブログ記事では、スプレッドシート内の特定の単語を検索して削除するマクロをご紹介します。

How to delete specific words in spreadsheets using an ONLYOFFICE macro

マクロの構築

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

まず、アクティブなワークシートと選択範囲を変数 oWorksheet と oRange に取得し、スプレッドシート全体で検索したい単語を設定します。

let index = 0;
  oRange.ForEach(function (range) {
    index++;
    const cellValue = oWorksheet.GetRange(range).GetValue();
    const contains = containsWord(cellValue, wordToCheck);

次に、foreach ループを使用して範囲を反復処理し、選択範囲内の各セルの値を取得して containsWord メソッドに渡します。containsWord()メソッドには、セルの値と検索したい単語の 2 つのパラメータが渡されます。

    if (contains === 1) {
      //Uncomment the console.log() to view deleted cells in the browser's console.
      // console.log(`The sentence ${cellValue} contained the word you wanted to delete, and was deleted.`);
      oWorksheet.GetRange(range).Clear();
    } else if (contains === true) {
      oWorksheet
        .GetRange(range)
        .SetFillColor(Api.CreateColorFromRGB(204, 0, 0));
    }

containsWord() メソッドが完了すると、返される値によってその後の動作が決定されます。値が 1 の場合は完全一致を示し、そのセルはクリアされます。一方、メソッドが真を返した場合は、追加の文字内にターゲット・ワードが存在することを示し、そのセルは強調表示されます。

function containsWord(sentence, word) {
    const trimmedSentence = sentence.trim();
    const trimmedWord = word.trim();
    if (trimmedSentence === trimmedWord) {
      return 1;
    } else {
      const regex = new RegExp("\\b" + trimmedWord + "\\b", "i");
      return regex.test(trimmedSentence);
    }
  }

containsWord() メソッドは、このマクロの主要な計算関数です。セルの値と検索対象の単語を受け取り、余分な空白がないようにトリミングします。セル値がターゲット単語と正確に一致し、追加の内容がない場合は 1 を返します。しかし、文の中など、セルの値に他の文字と一緒に目的の単語が含まれている場合は、true を返します。

マクロコード全体

(function () {
  const oWorksheet = Api.GetActiveSheet();
  const oRange = oWorksheet.GetSelection();
  const wordToCheck = "apple";
  let index = 0;
  oRange.ForEach(function (range) {
    index++;
    const cellValue = oWorksheet.GetRange(range).GetValue();
    const contains = containsWord(cellValue, wordToCheck);

    if (contains === 1) {
      //Uncomment the console.log() to view deleted cells in the browser's console.
      // console.log(`The sentence ${cellValue} contained the word you wanted to delete, and was deleted. `);
      oWorksheet.GetRange(range).Clear();
    } else if (contains === true) {
      oWorksheet
        .GetRange(range)
        .SetFillColor(Api.CreateColorFromRGB(204, 0, 0));
    }
  });

  function containsWord(sentence, word) {
    const trimmedSentence = sentence.trim();
    const trimmedWord = word.trim();
    if (trimmedSentence === trimmedWord) {
      return 1;
    } else {
      const regex = new RegExp("\\b" + trimmedWord + "\\b", "i");
      return regex.test(trimmedSentence);
    }
  }
})();

それでは、マクロのパフォーマンスを見てみましょう。

これで、スプレッドシートの単語削除マクロの完成です!この便利なツールは、特定の単語を簡単に削除できるように設計されており、スプレッドシートの編集を簡単にし、時間を節約し、スプレッドシートのワークフローを向上させます。編集をお楽しみください!

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