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

正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史

版本 1 下一个 »

应用场景

我们可以通过计划任务中的自定义功能,写代码实现修改导出文件的名称。

实现操作

  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 ,这个路径请配置为系统的临时目录,方便以后删除。

    报表ID获取:

  3. 参数ID获取:有两种方法

    方法一:

    通过【报表导出】任务类型,然后在【查看运行脚本】中找到该参数的ID

     

     

     

     

     

    方法二:这种方法只适用于有数据集的报表

    通过数据集那里的输出参数查看参数的ID

    通过【血统分析】找到报表使用的数据集

     

     

    打开数据集

     

    在右边的【输出参数】中查看参数的ID

     

  • 无标签