问题描述

客户想在前端电子表格报表上添加按钮,点击执行特定的计划任务。

适用范围

V11

解决方案

通过宏代码调用有以下几点需要注意:

  1. 用户必须要有计划任务的操作权限。
  2. 调用非定制的任务需要有引用权限。
  3. 调用定制的任务需要有编辑权限,并且需要有定制任务操作权限(安全设置→定制任务)。


类型对象事件
ClientSidespreadsheetReportonRenderReport


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._newBtn = newBtn;
    }
}
// 新添加按钮Click事件处理函数
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]);
	}
	//执行计划
	/*var ret = util.remoteInvoke('ScheduleSDK', 'run', [id]);
	if(ret.result){
		alert('计划执行成功');
	}else{
		alert('计划执行失败');
	}*/
}