应用场景
我们可以通过计划任务中的自定义功能,写代码实现修改导出文件的名称,此示例效果是在导出的附件文件名上添加当前日期和一个固定值
注:示例脚本仅供参考。
实现操作
1、在原始报表上添加一个日期参数,用于导出的时候可以获取到。

2、在计划任务中添加脚本,操作入口计划任务】-> 【任务】新建任务->定制
importPackage(Packages.smartbi.email.module);
importPackage(Packages.java.io);
//报表ID
var reportID = 'I4028818a015d62bd62bd9475015d97c4ee9b40d9';
//报表参数设置:日期参数 默认值是今天
var reportParamSetting = [
{id:"OutputParameter.I4028818a015d62bd62bd9475015d97c4d00040d5.开始日期2",value:getNowFormatDate(),displayValue:getNowFormatDate()}
];
//收件人邮箱,多个时,用英文分号隔开(;)
var mailList = "zhangxueqiong@smartbi.com.cn;zhangmeiting@smartbi.com.cn";
//邮件的内容
var mailText = "这是一个系统自动发送的邮件,所含附件是您订阅的报表";
//报表名称的固定值
var seperatorFix = "_V01";
//服务器临时文件目录
var tmpPath = "c:/";
//获取当前日期:YYYY-MM-DD
function getNowFormatDate() {
var date = new Date();
var seperator1 = "";
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
//YYYY-MM-DD
var currentdate_date = date.getFullYear() + seperator1 + month + seperator1 + strDate;
return currentdate_date;
}var openReportOutput = execute('openResource', {
connector: connector,
reportId: reportID
});
var enumerateParamValuesOutput = execute('enumerateParamValues', {
resourceHandle: openReportOutput.resourceHandle,
byEveryParam: false,
paramsSetting: reportParamSetting
});
var exportReportOutput = execute('exportResource', {
connector: connector,
resourceHandle: openReportOutput.resourceHandle,
paramSettingIterator: enumerateParamValuesOutput.getParamValues(),
exportSetting: {"delimiter":"","pathId":"","fileNameSufParams":true},
taskName: taskName,
exportType: "EXCEL2007"
});
openReportOutput.resourceHandle.close();
var outputFile = exportReportOutput.file;
//文件重命名
var fileName = outputFile.getName();
var index = fileName.lastIndexOf(".");
var newName = fileName.substring(0, index)+seperatorFix+"."+fileName.substring(index+1);//新建一个重命名的文件
var destFile = new File(tmpPath+newName);
//文件若存在,则删掉
if(destFile.exists()){
destFile.delete();
}
var flag = outputFile.renameTo(destFile);
outputFile = destFile;
var sendToMailOutput = execute('sendToMail', {
connector: connector,
taskName: taskName,
paramValueMap: null,
files: [outputFile],
sendSetting: {"mailList":mailList,"doZip":false,"title":"%TASKNAME_%DATE%TIME","text":mailText,"picInMail":false}
});
关键点说明
1、临时目录配置:tmpPath ,这个路径请配置为系统的临时目录,方便以后删除。

2、报表ID获取:参数ID获取:有两种方法
方法一:通过【报表导出】任务类型,然后在【查看运行脚本】中找到该参数的ID
方法二:这种方法只适用于有数据集的报表,通过数据集那里的输出参数查看参数的ID

测试结果:
