管理标签的脚本示例

以下部分展示了对标签执行各种操作的脚本示例。

向帐户添加标签

要使用标签,请先将其添加到帐户。 最多可以向帐户添加 100,000 个标签。 若要添加标签,请使用 createLabel 方法。 该方法将标签的名称、描述和背景颜色作为输入。

名称是必需的,但说明和颜色是可选的。 名称区分大小写,不能超过 80 个字符,并且在帐户中必须是唯一的。 虽然颜色是可选的,但如果您未指定,服务会为您选择随机颜色。 可以使用三字节十六进制数指定颜色,格式为 #RRGGBB (例如,CB0400) 或 16 个已知颜色名称(如红色、黄色和浅绿色)之一。 如果您指定颜色,则必须指定说明,但该说明可能是空字符串。

下面的示例显示了调用该方法的 createLabel 三种方法。

function main() {

    AdsApp.createLabel("foo");
    AdsApp.createLabel("bar", "a descriptive description", "aqua");
    AdsApp.createLabel("foo foo", "", "#FF0000");

}

列出帐户的标签

要获取帐户中的标签列表,请使用 labels 方法。 可以使用标准字符串运算符(如 =、CONTAINS 和 STARTS_WITH)按标签名称筛选列表。

function main() {

    // Gets all the labels in the account
    var accountLabels = AdsApp.labels()
        .get();  
    
    Logger.log(`selector returned ${accountLabels.totalNumEntities()} labels that matched the selector's conditions`);

    // Gets all the labels in the account that contain foo in the name
    accountLabels = AdsApp.labels()
        .withCondition("Name CONTAINS 'foo'")
        .get();
    
    Logger.log(`selector returned ${accountLabels.totalNumEntities()} labels that matched the selector's conditions`);

    // Gets the first 15 labels in the account
    accountLabels = AdsApp.labels()
        .withLimit(15)
        .get();
    
    Logger.log(`selector returned ${accountLabels.totalNumEntities()} labels that matched the selector's conditions`);

    // Gets the first 15 labels in the account that contain foo in the name
    accountLabels = AdsApp.labels()
        .withCondition("Name CONTAINS 'foo'")
        .withLimit(15)
        .get();

    Logger.log(`selector returned ${accountLabels.totalNumEntities()} labels that matched the selector's conditions`);

    while (accountLabels.hasNext()){
        var label = accountLabels.next();
    }

}

将标签应用于关键字 (keyword)

仅当标签应用于关键字等实体时,标签才有用。 若要将标签应用于关键字 (keyword) ,请使用关键字 (keyword) 的 applyLabel 方法。 最多可以向一个关键字 (keyword) 应用 50 个标签。 该方法采用标签的名称作为输入。 标签名称区分大小写,必须存在于帐户中,并且在关键字 (keyword) 中必须是唯一的。

下面的示例演示如何向关键字 (keyword) 添加标签、列出关键字 (keyword) 的标签,以及如何从关键字 (keyword) 中删除标签。

function main() {

    // Get a keyword to add labels to
    var keyword = AdsApp.keywords().withIds(["12345"]).get().next();

    // Print the keyword's existing labels
    var labels = keyword.labels().get();
    printLabels(labels);

    // Add labels to the keyword
    keyword.applyLabel("foo");
    keyword.applyLabel("foo foo");
    keyword.applyLabel("bar");

    // Print the new list of labels
    labels = keyword.labels().get();
    printLabels(labels);

    // Remove labels from the keyword
    keyword.removeLabel("foo");
    keyword.removeLabel("bar");

    // Print the new list of labels
    labels = keyword.labels().get();
    printLabels(labels);

}

function printLabels(labels) {
    Logger.log(`keyword has ${labels.totalNumEntities()} labels`);
    
    while (labels.hasNext()){
        var label = labels.next();

        Logger.log(`name: ${label.getName()}
            description: ${label.getDescription()}
            color: ${label.getColor()}\n\n`);
    }
}

获取包含任何指定标签的关键字

若要获取包含特定标签名称的关键字,请使用 KeywordSelector 对象的 withCondition () 方法。 使用 LabelNames 列名称按标签名称进行筛选。 可以指定一个或多个名称的数组。 名称区分大小写,必须完全匹配,并且必须存在于帐户中。 可以应用以下运算符:

  • CONTAINS_ALL — 如果关键字 (keyword) 包含所有指定的标签,则选择该
  • CONTAINS_ANY — 如果关键字 (keyword) 包含任何指定的标签,则选择该
  • CONTAINS_NONE — 如果关键字 (keyword) 不包含任何指定的标签,则选择该

请注意,如果账户中不存在标签,则选择器将失败并返回错误。

function main() {

    var keywords = AdsApp.keywords()
        .withCondition('LabelNames CONTAINS_ANY ["foo", "bar"]')
        .get();
    
    while (keywords.hasNext()){
        var keyword = keywords.next();

        var labels = keyword.labels().get();

        while (labels.hasNext()) {
            var label = labels.next();
        }
    }

}