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

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

与当前比较 查看页面历史

版本 1 下一个 »


1.应用场景:

创建一张报表,报表上有一个接收用户名的参数,根据用户名参数,筛选出该用户所能查看的数据。 现通过计划任务,动态设置用户名参数,并将该用户名参数的报表数据批量发送邮件给指定用户。(需要发送邮件的用户名保存在数据库表中,用户的邮箱保存在用户的扩展属性中。)

2.配置发件箱:


3.实现主要步骤及关键代码:

3.1.通过SQL查询出需要发送邮件的用户名称:

var sql = "SELECT JRYH FROM dyxx";var gridDataGroup = datasrcService.executeNoCacheable(dsId, sql);for (var i = 0; i < gridDataGroup.getRowsCount(); i++) { var userName = gridDataGroup.get(i, 0).getValue(); ...... }

3.2.根据用户名称获取用户属性:email:

//根据用户名获取用户对象var user = usrManagerService.getUserByName(userName);//根据key值获取用户扩展属性,此处获取用户的email地址var email = usrManagerService.getUserAttribute(user.getId(), "email").getValue();

3.3.通过设置用户名参数:

var reportParamSetting = [{id:"OutputParameter.I2c9019810158fc12fc1224c00158fc2e21c50069.当前用户",value:userName,displayValue:userName}]

3.4.打开报表:

var openReportOutput = execute('openResource', {
connector: connector,
reportId: reportID
});

3.5. 执行导出:

var exportReportOutput = execute('exportResource', {
connector: connector,
resourceHandle: openReportOutput.resourceHandle,
paramSettingIterator: enumerateParamValuesOutput.getParamValues(),
exportSetting: {"delimiter":"","pathId":"","fileNameSufParams":false},
taskName: taskName,
exportType: "EXCEL2007"
});

3.6.发送邮件:

var sendToMailOutput = execute('sendToMail', {
connector: connector,
taskName: taskName,
paramValueMap: null,
files: [outputFile],
//设置邮件
sendSetting: {"mailList":email,"doZip":doZip,"title":title,"text":text,"picInMail":picInMail}
});

3.7.批量发送邮件:

通过遍历第1步获取到的用户名称,重复执行第2、3、4、5、6步即可完成批量发送邮件。

4.附完整的定制任务代码


  • 无标签