gpt4 book ai didi

javascript - 如何使用 SS 2.0 将计划脚本中的用户名传递给 PDF 模板?

转载 作者:行者123 更新时间:2023-11-30 13:49:41 27 4
gpt4 key购买 nike

我已经制作了一个预定脚本,它通过 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
};
});

最佳答案

预定脚本中没有用户,因此 runtime.getCurrentUser() 不会返回值。您将需要通过 Suitelet 中的该方法检索用户(假设它不是匿名的外部 Suitelet)。

从那里您可以将脚本参数添加到预定脚本以保存用户,然后您的预定脚本可以读取该参数并将值作为另一个数据源添加到您的模板上。

关于javascript - 如何使用 SS 2.0 将计划脚本中的用户名传递给 PDF 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58522173/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com