问题描述
客户想在前端电子表格报表上添加按钮,点击执行特定的计划任务。
适用范围
V11
解决方案
通过宏代码调用有以下几点需要注意:
- 用户必须要有计划任务的操作权限。
- 调用非定制的任务需要有引用权限。
- 调用定制的任务需要有编辑权限,并且需要有定制任务操作权限(安全设置→定制任务)。
类型 | 对象 | 事件 |
---|---|---|
ClientSide | spreadsheetReport | onRenderReport |
function main(spreadsheetReport, isAjaxRefreshCallback) { if (!spreadsheetReport._newBtn) { // 不要重复添加按钮 var input = document.createElement("button"); //input.className = "button-buttonbar button-bgicon-save"; input.innerText = "执行任务"; input.title = "新添加的按钮"; input.accessKey = "N"; input.style.width = "50px"; input.style.height = "25px"; input.style.verticalAlign = 'top'; input.style.marginLeft = "12px"; var target = spreadsheetReport.elem_btnPrint.parentNode.nextSibling; var newBtn = target.parentNode.insertBefore(input, target); spreadsheetReport.addListener(newBtn, "click", doRunTask, spreadsheetReport);//执行任务 //spreadsheetReport.addListener(newBtn, "click", doRunScheule, spreadsheetReport);//执行计划 spreadsheetReport._newBtn = newBtn; } } // 执行任务 function doRunTask() { var taskId = "I8a74a40701919e5b9e5b45220191a21013875f56"; var crateUser = "admin";//任务创建用户 var util = jsloader.resolve("freequery.common.util"); //执行任务 var ret = util.remoteInvoke('ScheduleSDK', 'runTaskByid', [taskId, crateUser]); if(ret.result[0]=='true'){ alert('任务执行成功'); }else{ alert('任务执行失败:'+ret.result[2]); } } // 执行计划 function doRunScheule() { var id= "Iff80808101823e883e882d8101823eb1bdb507a1"; var util = jsloader.resolve("freequery.common.util"); //执行计划 var ret = util.remoteInvoke('ScheduleSDK', 'run', [id]); if(ret.result){ alert('计划执行成功'); }else{ alert('计划执行失败'); } }