首页 文章

查找并替换内容分组的脚本(Google-apps)

提问于
浏览
0

你们中的一些人可能熟悉Google Analytics中的内容分组,它基本上允许您将任意数量的URL分组到用户指定的组中(这对于分析所有同时存在的页面非常有用) . 我正在编写一个脚本,将其提升到一个新的水平,并在Google表格中使用它 .

目标:有一个工作脚本重写URL并为其提供另一个名称,无论它是否在URL中使用大写或小写 .

到目前为止我有这个:

function onOpen() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var range = sheet.getRange("a1:a10000");
    var to_replace = /.*example.*/;
    var replace_with = "TEST";
    var to_replace2 = /.*another-example.*/;
    var replace_with2 = "TEST-Nr2";

    replaceInSheet(sheet,range, to_replace, replace_with);
    replaceInSheet(sheet,range, to_replace2, replace_with2);
 }

这个脚本的工作原理是它将URL中的'Example'重写为'Test',并将'Another-example'重写为TEST-Nr2 .

但是,最终脚本可能会有数千个需要重写的URL . 此外,一些URL在其中有大写,我想忽略并重写 .

以上所有问题都让我有两个问题:

  • 如何以这种方式编写脚本(例如使用正则表达式?),我将不会拥有Toplex的Googleplex数和replace_with的?

  • 如何使我的to_replace变量不区分大小写?

如果需要更多关于此事的信息,我很乐意提供 .

亲切的问候,

JNeu

1 回答

  • 0

    不知怎的,你知道模式和替换值,是吗?您需要将这些知识传授给您的脚本 .

    最简单的方法是从电子表格中读取它,例如在某些工作簿中的某个工作表上,您有1列有该模式,另一列有替换 . 然后,您只需在(Range#getValues())中读取该数据,然后迭代该数组以处理您的数据范围 . 请注意,您在工作表中存储的模式不应包含文字构造函数斜杠,即您在单元格中需要 \d{1,3} 而不是 /\d{1,3}/ .

    例:

    function processAll() {
      const source = SpreadsheetApp.openById("id of the spreadsheet with pattern - replacement data"),
            info = source.getSheetByName("some sheet name")
                     .getDataRange().getValues();
    
      const databook = SpreadsheetApp.getActive(),
            sheet = databook.getSheetByName("name of the sheet with data to process");
      if (!sheet) return; // sheet with that name doesn't exist.
      const range = sheet.getRange(1, 1, sheet.getLastRow(), 1);
    
      info.forEach(function (row) {
        // Create case-insensitive pattern from the string in Column A, e.g. \d{1,3} and NOT /\d{1,3}/
        var pattern = new RegExp(row[0], "i"); 
        var repl = row[1];  // replacement text from Column B
        replaceInSheet(sheet, range, pattern, repl);
      });
    }
    

    补充阅读:

相关问题