サイトアイコン Googleスプレッドシート 完全攻略

【GAS】複数のNGワードを 見つける方法(Gスプレッドシート)

GAS応用の一覧

前回

Googleシート YouTubeの関連動画を表示させない方法
  • YouTubeをウインドウいっぱいに表示させることができます。
  • 関連動画が表示されないので誘惑が減ります。
  •  

    NGワードを見つける

     

     

     

     

    複数のNGワードを 見つける

     

     

    ご質問

    S T 
    チャンネル登録期間: 3 週間
     • 8 時間前
    こんにちは。以下を実現するために最もシンプルな関数を作りたいのですがどうすればいいでしょうか?
    ・あるセルの文章の中に特定の文字列が含まれる場合、“NGワード”とすぐ近くの別のセルに返したい。
    ・特定の文字列というのは、1つではなく多数あります。できればリストを参照する形にしたいです。
    例)
    特定のワードリスト:○にたい、○ぬ、辛い
    A1セルの文章:毎晩私は○にたいと思う
    A2セルの文章:たかしくんは楽しい
    ⇓
    この場合、A1セルにはNGワードリストにある「○にたい」が含まれている判定となるので、どこかのセルに「NGワードあり」といった感じで何か値を返したいです。
    A2セルには含まれていないので、NAなどを返したいです。
    COUNTIFSでちょっと頑張ろうとしたのですが、文字列を関数内に””で囲って繰り返し並べる長い数式になってしまい、もう少しスプレッドシートで効率的にできないかと思った次第です。
    宜しくお願い致します。

     

    動画はこちら

     

    スクリプト

    /**
    * NGワードが含まれているかチェックする。
    * 「NGワード」シートにあるNGワードが含まれているかチェックする。
    * @param {string} word チェックする文字列。
    * @return {boolen} true:NGワードあり false:NGワードなし
    * @customfunction 
    */
    function JUDGNGWORD( word )
    {
      var app = SpreadsheetApp;
      var ss = app.getActiveSpreadsheet().getSheetByName("NGワード");
      var lr  = ss.getLastRow();
      
      for( var i=2 ; i <= lr ;i++){
        var ckword = ss.getRange(i, 1).getValue();
        if(word.indexOf(ckword) >= 0 ){
          return(true);//NGワードが見つかった
        }
      }
      
      return(false);//NGワードなし
    }
    

     

    さらに

    NGワードを表示させる

    上記動画に対してご質問をいただきました。

    というわけでやっていきます。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    シート

     

    スクリプト

    /**
    * NGワードが含まれているかチェックする。
    * 「NGワード」シートにあるNGワードが含まれているかチェックする。
    * @param {string} word チェックする文字列。
    * @return {number} number:NGワードの位置(行) false:NGワードなし
    * @customfunction 
    */
    function JUDGENGWORD( word )
    {
      var app = SpreadsheetApp;
      var ss = app.getActiveSpreadsheet().getSheetByName("NGワード");
      var lr  = ss.getLastRow();
      
      for( var i=2 ; i <= lr ;i++){
        var ckword = ss.getRange(i, 1).getValue();
        if(word.indexOf(ckword) >= 0 ){
          // return(true);//NGワードが見つかった
          return(i);//NGワードが見つかった行
        }
      }
      
      return(false);//NGワードなし
    }
    
    function testJUDENGWORD(){
      var ret = JUDGENGWORD("▲")
      console.log(ret)
    
    }

     

     

     

    さらに、さらに

    NGワードを一気に読み込む

     

     

     

     

    スクリプト

    function JudgeNGWord(word) {
      const NGWORDSHEET = "NGワード"
      const ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(NGWORDSHEET)
      const lr = ss.getLastRow() //NGワードの最下行
    
      console.log(lr)
      let NgBuff = ss.getRange(2, 1, lr - 1).getValues()
    
    
      for (let i = 0; i < lr - 1; i++) {
        let ckword = NgBuff[i][0]
        console.log(ckword)
    
        if (word.indexOf(ckword) >= 0) {
          // return(true);//NGワードが見つかった
          return (ckword);//NGワードが見つかった行
        }
      }
    
      return (false);//NGワードなし
    }
    
    
    function test_JudgeNGWord() {
      console.log(JudgeNGWord("〇〇"))
    }

     

    動画はこちら

     

     

     

     

    さらにさらに。。。

    引数を一気に渡し一気に取得

     

     

    動画はこちら

    スクリプト

    function JudgeNGWordRange(words) {
      let retbuf = []
    
    
    
      const NGWORDSHEET = "NGワード"
      const ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(NGWORDSHEET)
      const lr = ss.getLastRow() //NGワードの最下行
    
      let NgBuff = ss.getRange(2, 1, lr - 1).getValues()
    
    
    
      for (let s = 0; s < words.length; s++) {    //チェックする文字列のループ
    
        let word = words[s][0]  //チェックする文字列
    
        let bNG = false   // true:NGワードが見つかった 
        for (let i = 0; i < lr - 1; i++) {
          let ckword = NgBuff[i][0]
    
          if (word.indexOf(ckword) >= 0) {    //NGワードが見つかった
            bNG = true
            retbuf.push(ckword)
            break
    
          }
        }
        if (!bNG)//NGワードが見つからなかったら
          retbuf.push(false)
    
      }
      return (retbuf)
    
    }
    

     

     

    以上です。

    最後までご覧いただきありがとうございます。

     

    つぎはこちら

    Googleシート 複数のNGワードを的確に抽出する方法
  • REGEXMATCH関数の使用方法がわかります。
  • TRANSPOSE()、ArrayFormula()の効果的な使用方法がわかります。
  •  

    質問対応の一覧

    モバイルバージョンを終了