您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# TE对象message js脚本简单写法是什么
## 什么是TE对象message
TE(Tableau Extensions)对象中的`message`是Tableau扩展功能中用于通信的核心机制,它允许扩展与Tableau工作簿之间进行双向数据传递。通过`message`对象,开发者可以:
1. 从Tableau获取工作簿数据
2. 向Tableau发送操作指令
3. 监听Tableau的状态变化
## 基础JS脚本写法示例
### 1. 初始化message通信
```javascript
tableau.extensions.initializeAsync().then(() => {
// 初始化成功后执行
const dashboard = tableau.extensions.dashboardContent;
const worksheet = dashboard.worksheets.find(ws => ws.name === "Sales");
// 获取数据示例
worksheet.getSummaryDataAsync().then(summaryData => {
console.log("获取到的数据:", summaryData);
});
});
function sendSimpleMessage() {
tableau.extensions.ui.displayDialogAsync(
"popup.html",
JSON.stringify({ action: "refresh", data: {} }),
{ width: 400, height: 300 }
).then(closePayload => {
console.log("返回的消息:", closePayload);
});
}
// 在扩展的HTML页面中
window.addEventListener('message', event => {
if (event.origin !== window.location.origin) return;
const message = JSON.parse(event.data);
switch(message.action) {
case "update":
updateData(message.payload);
break;
case "notify":
showNotification(message.text);
break;
}
});
// 发送请求
function requestData() {
return new Promise((resolve) => {
const listener = (event) => {
if (event.data.type === "DATA_RESPONSE") {
window.removeEventListener('message', listener);
resolve(event.data.payload);
}
};
window.addEventListener('message', listener);
parent.postMessage({
type: "DATA_REQUEST",
parameters: { sheet: "Monthly" }
}, "*");
});
}
// 监听工作表切换事件
tableau.extensions.dashboardContent.dashboard.worksheets.forEach(worksheet => {
worksheet.addEventListener(
tableau.TableauEventType.FilterChanged,
(event) => {
console.log("筛选器变化:", event);
}
);
});
消息结构化:建议采用统一的消息格式
{
"version": "1.0",
"timestamp": "2023-11-20T12:00:00Z",
"type": "data_request/command/event",
"payload": {}
}
错误处理:
function safeSend(message) {
try {
if (!tableau.extensions) throw new Error("Tableau未初始化");
parent.postMessage(JSON.stringify(message), "*");
} catch (error) {
console.error("消息发送失败:", error);
}
}
性能优化:
console.log("发送消息:", {
direction: "outbound",
message: messageObj
});
tableau.extensions.environment.debug = true;
<!DOCTYPE html>
<html>
<head>
<script src="tableau.extensions.1.latest.js"></script>
<script>
tableau.extensions.initializeAsync().then(() => {
// 消息接收处理
window.addEventListener('message', (event) => {
const msg = JSON.parse(event.data);
document.getElementById('status').innerText = msg.status;
});
// 发送初始化消息
parent.postMessage(JSON.stringify({
type: 'init',
dashboard: tableau.extensions.dashboardContent.dashboard.name
}), '*');
});
</script>
</head>
<body>
<div id="status">等待连接...</div>
</body>
</html>
通过以上示例和方法,开发者可以快速实现Tableau扩展与工作簿之间的高效通信。实际开发时应根据具体需求选择合适的消息模式,并注意错误处理和性能优化。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。