brn*_*rnc 2 google-sheets google-apps-script slack-api
我正在为我的 Google 电子表格编写应用程序脚本,我想知道如何将图表作为图像附件发送到 Slack?
这是获取图表的函数:
function getChart(){
var sheet = SpreadsheetApp.getActiveSheet();
var chart = sheet.getCharts()[0];
var pic = chart.getAs('image/png');
if (chart){
msg(pic);
return pic;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的“dashbot”功能,它向 slack 发送一条短信:
function dashbot() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var content = {"channel": "XXX", //edit
"username": "XXX",
"text": "XXX"};
var params = {
"method": "post",
"payload": JSON.stringify(content)
};
UrlFetchApp.fetch('https://hooks.slack.com/XXXXX', params)
}
Run Code Online (Sandbox Code Playgroud)
有什么想法如何继续推进吗?
这个示例脚本怎么样?正如 @Erik Kalkoken 所说,文件无法使用 Webhook 直接上传到 Slack。所以当文件上传到Slack时,必须使用URL。使用URL上传文件后,即使文件被删除,Slack上的文件也不会被删除。我准备了一个示例脚本来反映这一点。
脚本流程如下。
在此脚本中,uloaded 文件位于 Google Drive 的根目录中。即使文件被删除,Slack 上的文件也不会被删除。
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var chart = sheet.getCharts()[0];
if (chart) {
var pic = chart.getAs('image/png');
var file = DriveApp.createFile(pic).setName("sampleimage.png");
file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW); // Modify file permission to the open.
var content = {
"channel":"XXX",
"username":"XXX",
"text":"XXX",
"attachments":[{"image_url": "http://drive.google.com/uc?export=download&id=" + file.getId()}]
};
var res = UrlFetchApp.fetch(
"https://hooks.slack.com/XXXXX",
{
method: "post",
payload: JSON.stringify(content),
muteHttpExceptions: true,
}).getContentText();
Utilities.sleep(3000); // Wait for until reading image file from Slack.
file.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE); // Modify file permission to the close.
}
}
Run Code Online (Sandbox Code Playgroud)
如果这对您没有用,我很抱歉。
| 归档时间: |
|
| 查看次数: |
2053 次 |
| 最近记录: |