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 重写为“测试”,并将“另一个示例”重写为 TEST-Nr2。

然而,最终的脚本可能会有数千个需要重写的 URL。此外,某些 URL 中包含大写字母,我想忽略并重写。

以上所有让我想到两个问题:

  1. 我怎样才能以这样的方式编写脚本(例如使用正则表达式?)我不会有 To_replace 和 replace_with 的 Googleplex 编号?

  2. 如何使我的 to_replace 变量区分大小写?

如果需要有关此问题的更多信息,我将很乐意提供。

亲切的问候,

神经网络

4

1 回答 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);
  });
}

补充阅读:

于 2018-09-17T14:33:05.897 回答