Google文档技巧:Excel关键词筛选宏脚本(快速实现关键词分组的Excel工具)

如果有大批量的长尾关键词,想通过【关键词】找出包含的长尾

简短点说,就是可以快速对关键词分组

话不多说,Google Script代码:

function fuzzyMatchKeywords_chongfu() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = spreadsheet.getSheetByName('工作表1');
  var sheet2 = spreadsheet.getSheetByName('工作表2');
  
  // 获取工作表1中的关键词列表,并过滤掉空白行
  var keywordsSheet1 = sheet1.getRange('A:A').getValues().filter(function(row) {
    return row[0].trim() !== '';
  }).map(function(row) {
    return row[0];
  });

  // 获取工作表2第一行的关键词
  var keywordsSheet2 = sheet2.getRange(1, 1, 1, sheet2.getLastColumn()).getValues()[0];

  // 清除之前的匹配结果,保留第一行的关键词
  var lastRow = sheet2.getLastRow();
  if (lastRow > 1) {
    for (var col = 1; col <= sheet2.getLastColumn(); col++) {
      var numRowsToClear = lastRow - 1;
      if (numRowsToClear > 0) {
        var rangeToClear = sheet2.getRange(2, col, numRowsToClear);
        rangeToClear.clearContent();
      }
    }
  }

  var matchedKeywords = new Set(); // 用于存储已匹配到的关键词
  var unmatchedKeywords = []; // 用于存储未匹配到的关键词
  
  // 进行模糊匹配并填充结果
  for (var i = 0; i < keywordsSheet2.length; i++) {
    var matchCol = i + 1;
    var searchKeyword = keywordsSheet2[i].toLowerCase();
    var regex = new RegExp(searchKeyword, 'i'); // 创建不区分大小写的正则表达式
    var rowOffset = 2; // 从第2行开始写入数据
    
    for (var j = 0; j < keywordsSheet1.length; j++) {
      var keyword = keywordsSheet1[j];
      if (regex.test(keyword)) {  // 使用正则表达式进行模糊匹配
        sheet2.getRange(rowOffset, matchCol).setValue(keyword);
        rowOffset++;
        matchedKeywords.add(keyword); // 将匹配到的关键词加入集合
      }
    }
  }

  // 找出未匹配的关键词
  for (var j = 0; j < keywordsSheet1.length; j++) {
    if (!matchedKeywords.has(keywordsSheet1[j])) {
      unmatchedKeywords.push(keywordsSheet1[j]);
    }
  }

  // 创建未分组列,并将未匹配到的关键词填入
  if (unmatchedKeywords.length > 0) {
    var lastColumn = sheet2.getLastColumn() + 1;
    sheet2.getRange(1, lastColumn).setValue('未分组'); // 设置“未分组”列的标题
    for (var k = 0; k < unmatchedKeywords.length; k++) {
      sheet2.getRange(k + 2, lastColumn).setValue(unmatchedKeywords[k]);
    }
  }
}

使用很简单,在【工作表1】第一列输入你的长尾关键词
然后在【工作表2】第一行输入你的"分组"(关键词)
然后用Google Script执行就行了

原理:模糊匹配