页面树结构
转至元数据结尾
转至元数据起始

应用场景

我们可以通过计划任务中的自定义功能,写代码实现修改导出文件的名称,此示例效果是在导出的附件文件名上添加当前日期和一个固定值

注:示例脚本仅供参考。

实现操作

     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

测试结果:

 

  • 无标签