Javascript 如何使用SS2.0将计划脚本中的用户名传递到PDF模板?
我制作了一个计划脚本,通过Javascript 如何使用SS2.0将计划脚本中的用户名传递到PDF模板?,javascript,javascript-objects,netsuite,suitescript2.0,Javascript,Javascript Objects,Netsuite,Suitescript2.0,我制作了一个计划脚本,通过email.send()发送PDF 我已从Suitelet获得过滤器作为参数。我想获取用户的名称(来自runtime.getCurrentUser)并将其传递给我的PDF。我只是不知道如何传递它们,以及该API是否会在Suitelet或Sched脚本中使用。 有人能帮我写代码吗 以下是我的计划脚本代码: /** * @NApiVersion 2.x * @NScriptType scheduledscript */ define(['N/ui/serverWidg
email.send()发送PDF
我已从Suitelet获得过滤器作为参数。我想获取用户的名称(来自runtime.getCurrentUser)并将其传递给我的PDF。我只是不知道如何传递它们,以及该API是否会在Suitelet或Sched脚本中使用。
有人能帮我写代码吗
以下是我的计划脚本代码:
/**
* @NApiVersion 2.x
* @NScriptType scheduledscript
*/
define(['N/ui/serverWidget', 'N/search', 'N/render', 'N/runtime', 'N/file', 'N/email'],
function (ui, search, render, runtime, file, email) {
function execute() {
try {
generateReport();
}
catch (e) {
log.error('generateReport ERROR', e);
}
}
function generateReport() {
var slfilters = runtime.getCurrentScript().getParameter({ name: 'custscript_searchfilter_report' });
log.debug('slfilters', slfilters);
if (!!slfilters) {
slfilters = JSON.parse(slfilters);
}
log.debug('slfilters2', slfilters);
var user = runtime.getCurrentUser();//Need this user to be passed to my xml template
var gender = slfilters.gender;//getting this from Suitelet
log.debug('gender', gender);
var item = slfilters.item;//getting this from Suitelet
log.debug('item', item);
var item_ = getItems(item, gender);
log.debug('getItems(item, gender)', item_);
//return item;
var xmlTemplateFile = file.load(3918);
//var template = script.getParameter({ name: 'custscript_template' });
var renderer = render.create();
renderer.templateContent = xmlTemplateFile.getContents();
var customSources = {
alias: 'searchdata',
format: render.DataSource.JSON,
data: JSON.stringify({
value: item_,
})
};
renderer.addCustomDataSource(customSources);
var xml = renderer.renderAsString();
var pdf = render.xmlToPdf({
"xmlString": xml
});
email.send({
author: 317,
recipients: 'aniswtf@gmail.com',
subject: 'Item Report',
body: 'Report Generated: ',
attachments: [pdf]
});
}
//
// ─── GET RESULTS ───────────────────────────────────────────────────
//
const getResults = function (set) {
var results = [];
var i = 0;
while (true) {
var result = set.getRange({
"start": i,
"end": i + 1000
});
if (!result) break;
results = results.concat(result);
if (result.length < 1000) break;
i += 1000;
}
return results;
};
//
// ─── GET ITEMS ───────────────────────────────────────────────────
//
function getItems(item, gender,user) {
try {
log.error('getItems Function started');
var itemSearch = search.load({
id: 'customsearch_mx_itemsearch'
});
var defaultFilters = itemSearch.filters;
itemSearch.filters.push(
search.createFilter({
name: "custitem5",
operator: 'anyof',
values: gender
}),
search.createFilter({
name: "internalid",
operator: 'anyof',
values: item
})
);
//defaultFilters = arrFilters;
//defaultFilters = defaultFilters.concat(arrFilters);
//log.error('Updated Filters', defaultFilters)
log.error('itemSearch', itemSearch);
//return defaultFilters;
var results = itemSearch.run().getRange({
start: 0,
end: 150
});
var result2 = results.map(function (x) {
// var results = getResults(itemSearch.run()).map(function (x) {
return {
'category': x.getText({
name: "custitem10",
join: "parent"
}),
'season': x.getValue({
name: "custitem11",
join: "parent"
}),
'riselabel': x.getText({
name: "custitem_itemriselabel",
join: "parent"
}),
'fit': x.getText({
name: "custitem9",
join: "parent"
}),
'name': x.getText({ //sku
name: "itemid",
join: "parent"
}),
'style': x.getText({
name: "custitem8",
join: "parent"
}),
'inseam': x.getText({
name: "custitem7",
join: "parent"
}),
'wash': x.getText({
name: "custitem_washname",
join: "parent"
}),
};
});
log.debug('Results', results.length);
log.debug('results', results);
log.debug('result2', result2);
// return results;//nabeeel's
return result2;//mine
} catch (e) {
log.error('error in getItems', e)
}
}
return {
execute: execute
};
});
/**
*@NApiVersion 2.x
*@NScriptType scheduledscript
*/
定义(['N/ui/serverWidget','N/search','N/render','N/runtime','N/file','N/email'],
功能(ui、搜索、渲染、运行时、文件、电子邮件){
函数execute(){
试一试{
generateReport();
}
捕获(e){
log.error('generateReport error',e);
}
}
函数生成器报告(){
var slfilters=runtime.getCurrentScript().getParameter({name:'custscript\u searchfilter\u report'});
log.debug('slfilters',slfilters);
如果(!!slfilters){
slfilters=JSON.parse(slfilters);
}
log.debug('slfilters2',slfilters);
var user=runtime.getCurrentUser();//需要将此用户传递到我的xml模板吗
var gender=slfilters.gender;//从Suitelet获取此信息
log.debug('gender',gender);
var item=slfilters.item;//从Suitelet获取此信息
log.debug('item',item);
var项目=获取项目(项目,性别);
log.debug('getItems(item,gender)’,item_u2;);
//退货项目;
var xmlTemplateFile=file.load(3918);
//var template=script.getParameter({name:'custscript\u template'});
var renderer=render.create();
renderer.templateContent=xmlTemplateFile.getContents();
var customSources={
别名:“searchdata”,
格式:render.DataSource.JSON,
数据:JSON.stringify({
值:项目号,
})
};
renderer.addCustomDataSource(customSources);
var xml=renderer.renderAsString();
var pdf=render.xmlToPdf({
“xmlString”:xml
});
email.send({
作者:317,
收件人:'aniswtf@gmail.com',
主题:“项目报告”,
正文:“生成的报告:”,
附件:[pdf]
});
}
//
// ─── 取得成果───────────────────────────────────────────────────
//
const getResults=函数(集合){
var结果=[];
var i=0;
while(true){
var result=set.getRange({
“开始”:我,
“结束”:i+1000
});
如果(!结果)中断;
结果=结果。concat(结果);
如果(结果长度<1000)断裂;
i+=1000;
}
返回结果;
};
//
// ─── 获取项目───────────────────────────────────────────────────
//
函数getItems(项目、性别、用户){
试一试{
log.error('getItems函数已启动');
var itemSearch=search.load({
id:“customsearch\u mx\u itemsearch”
});
var defaultFilters=itemSearch.filters;
itemSearch.filters.push(
search.createFilter({
名称:“custitem5”,
运算符:“anyof”,
价值观:性别
}),
search.createFilter({
名称:“内部ID”,
运算符:“anyof”,
价值观:项目
})
);
//defaultFilters=arrFilters;
//defaultFilters=defaultFilters.concat(arrFilters);
//log.error('Updated Filters',defaultFilters)
log.error('itemSearch',itemSearch);
//返回默认过滤器;
var results=itemSearch.run().getRange({
起点:0,
完:150
});
var result2=results.map(函数(x){
//var results=getResults(itemSearch.run()).map(函数(x){
返回{
“类别”:x.getText({
名称:“custitem10”,
加入:“家长”
}),
“季节”:x.getValue({
名称:“custitem11”,
加入:“家长”
}),
“riselabel”:x.getText({
名称:“custitem\u itemriselabel”,
加入:“家长”
}),
“fit”:x.getText({
名称:“custitem9”,
加入:“家长”
}),
“名称”:x.getText({//sku)
名称:“项目ID”,
加入:“家长”
}),
“样式”:x.getText({
名称:“custitem8”,
加入:“家长”
}),
“内接缝”:x.getText({
名称:“custitem7”,
加入:“家长”
}),
“wash”:x.getText({
名称:“客户项目名称”,
加入:“家长”
}),
};
});
log.debug('Results',Results.length);
log.debug('results',results);
log.debug('result2',result2);
//返回结果;//nabeeel的
返回结果2;//我的
}捕获(e){
log.error('getItems'中的错误',e)
}
}
返回{
执行:执行
};
});
计划脚本中没有用户,因此runtime.getCurrentUser()
不会返回值。您需要在Suitelet中通过该方法检索用户(假设它不是匿名外部Suitelet)
从那里,您可以将脚本参数添加到计划脚本中以容纳用户,然后您的计划脚本可以读取该参数并将值作为模板上的另一个数据源添加。是的,您是对的!非常感谢@erictgrubaugh此评论非常有助于您的想法。