# 关于测量扩展API

## 自定义事件设置 setCustomEvent

功能：每次事件被触发时，转发事件数量，可以测量按钮点击、注册完成、添加到购物车等行为数据。根据业务所需的逻辑进行设置，可以获得数据。例如，在测量注册数时，将自定义事件代码放置在ajax的成功函数中进行测量。

**格式:**

```
_pt_sp_2.push('setCustomEvent',{ eventName:'事件名', isActiveElement:是否为交互元素})
```

参数eventName：事件名，String类型，固定字符串选择必须。 参数isActiveElement: 是否为交互元素，Number类型，可选，1:交互元素，0:非交互元素。初始值为0。

**示例：**

```
_pt_sp_2.push('setCustomEvent',{ 
    eventName:'手动事件测量', 
    isActiveElement:1
})
```

## 自定义维度 setCustomVar

**格式：**

```
_pt_sp_2.push('setCustomVarV2',{eventName: '事件系自定义变量'}) 
```

**功能：** 在事件设置的基础上，可以通过代码添加自定义变量。例如，对于"添加到购物车"事件，可以测量商品类型、商品价格等。相应的变量分别为"添加到购物车的商品类型"和"添加到购物车的商品价格"。此功能可以通过使用特殊计划或与DataDeck集成来使用。

**参数：** setCustomVarV2是固定值，必须选择。第二个参数是json格式对象。第二个参数{key：value}：可以最多添加10个键：值对进行数据收集。图中显示了4个已设置，还可以设置6个。

**Key（属性名）：** 使用数字、字母和下划线的组合。如果使用其他字符，数据将不会被收集。另外，如果超过12个字符，数据也无法被收集。如果添加重复的键，重复的键会被覆盖。

**Value（属性值）：** 数据类型：string、int、float、date共4种。使用其他数据类型，数据将不会被收集。各种数据类型的长度限制如下。

**字符串（string）：** 超过50个字符的数据不会被收集。

**整数（int）：** (-2147483648,2147483647)，使用此范围外的整数，数据将不会被收集。

**浮点数（float）**：(-4294967296,4294967294)，使用此范围外的浮点数，数据也不会被收集。

**日期（date）**：时间格式需要为"YYYY-MM-DD HH：MM：SS"。如果格式不正确，数据将不会被收集。

**示例：**

```
_pt_sp_2.push('setCustomVarV2',{
    eventName: '购买',
    productId: 123456,
    productCatalog: '商品分类',
    productName: '商品名称',
    productPrice: 123.45,
    createDate: '2018-04-23 15:40:46'
})
```

## 跨域设置setCrossDomainLink

**格式：**

```
_pt_sp_2.push('setCrossDomainLink,allManual/halfManual '); 
```

**功能：** 通过跨域设置进行链接。即使在A域和B域中设置了相同的测量代码，当用户从A域移动到B域时，由于cookie无法共享，访问数会被分开，从而妨碍正确的数据收集。为了链接访问，可以使用此功能来关联访问。此API的原理是获取cookie信息，并将其设置为href标签属性的链接点信息，从而收集系统的访问数据。如果网站的导航不是通过a标签href方式进行的，则无法使用此功能。

**参数：** allManual全手动模式。在需要执行跨域处理的a标签内添加onclick="pt\_domain"属性。如果用户已经设置了onclick事件（例：onclick="test()"），可以在其后面添加pt\_domain（例：onclick="test();pt\_domain"）。如果没有此属性的a标签，将不会执行跨域处理。

halfManual为半手动模式。无需修改a标签，页面内的所有a标签都会进行跨域处理。

## 设置页面标题 setVPT

**格式：**

```
_pt_sp_2.push('setVPT,演示title'); 
```

**功能：** 设置演示标题。当页面没有title标签时，在Ptengine中会显示为"not set"，为了避免这种情况，可以使用此功能手动设置页面标题。

**示例：**

```
_pt_sp_2.push('setVPT,ptmind'); 
```

原页面标题：ptengine 使用setVPT后，在Ptengine中显示的标题：ptmind

## setVPV

**格式：**

```
_pt_sp_2.push('setVPV,演示url');
```

**功能：** 可以设置演示URL。注意：使用此功能时，URL会自动转换为小写，因此如果URL包含大写字母，可能会受到影响。

示例：

```
_pt_sp_2.push('setVPV,http://www.baidu.com/your'); 
```

原URL：`http://www.baidu.com` setVPV 后：`http://www.baidu.com/your`

## setURL

**格式：** \_pt\_sp\_2.push('setURL,＃');

**功能：** 设置url中"#"后面的信息。

**示例：**

```
_pt_sp_2.push('setURL,btnSave'); 
```

原URL：`http://www.baidu.com`

使用setURL后Ptengine中显示的URL：`http://www.baidu.com#btnSave`

## setPVTag

**格式：**

```
_pt_sp_2.push('setPVTag,URL/＃位置信息,replace'); 
```

**功能：** 一次性发送PV数据的功能。可以将由单页应用组成的网站的URL转换演示为pv。如果页面实际上没有移动，但URL和页面内容发生了变化，使用此函数可以生成演示URL，之后的所有数据都可以对应到新URL。

**参数1：** 如果未设置参数2（replace），此值将与需要在原URL中添加的＃位置信息相同。生成的演示URL将是（原URL+＃位置信息）。

如果参数2设置为replace，此值将是更改后的完整URL。生成的演示URL将是通过此值新设置的新URL。

**参数2：** replace

**示例1：** 原URL：`http://www.ptmind.com` 想要生成的演示URL：`http://www.ptmind.com#login` 在这种情况下，需要以下函数。 \_pt\_sp\_2.push('setPVTag,login');

**示例2：** 原URL： `http://www.ptmind.com` 想要生成的演示URL：`http://www.ptmind.com/login`

在这种情况下，需要以下函数。

`_pt_sp_2.push('setPVTag,http://www.ptmind.com/login,replace');`

## 样本率设置 setSampleRate

**格式：**

```
_pt_sp_2.push('setSampleRate, 样本率'); 
```

**功能：** 设置收集数据的样本率。如果网站的访问数据过多，不想进行全量收集，可以设置样本率来控制数据测量。

**参数1：** 样本率设置，必须选择。例如：如果设置为1000，显示的样本率为1/1000，在1万UV中仅采集10UV的访问数据。

示例：

```
<script>
window._pt_sp_2 =window._pt_sp_2 || [];
_pt_sp_2.push('setSampleRate,1000');
_pt_sp_2.push('setAccount,sid')
</script>
<script src="https://js.ptengine.jp/sid.js"></script>
```

## 不通过广告参数产生新访问 setIgnoreCampaign

格式：

```
_pt_sp_2.push('setIgnoreCampaign,true'); 
```

**功能：** 数据收集系统会自动将包含广告参数的页面显示为新访问的入口页面，因此即使持续重新加载，每次重新加载都会被计为新访问的入口页面。

**参数：** 当此值为true时，将忽略广告(utm)参数，不通过广告参数产生新访问。当值为false时，将不忽略广告(utm)参数，每次访问都将包含广告参数的页面作为入口，因此被计为新访问。

## 开启iframe内事件测量功能 setIframe

**格式：**

```
_pt_sp_2.push('setIframe, true'); 
```

**功能：** 开启iframe内的事件测量功能

**参数：** 当此值为true时，iframe内的事件测量功能将打开，当值不为true时，不会打开。在基本设置状态下，iframe内的事件测量功能处于关闭状态。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://helps.ptengine.com/cn/developer/extended-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
