Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * 帳票テンプレートエンジンのPOC
- * 対象レコードのSalesforce IdとExcel Templateのみから、エクセル帳票を出力する。
- * @author Satoshi Haga
- * @date 2016/02/11
- */
- var ExcelMerge = require('js-merge-xlsx');
- var Promise = require('bluebird');
- var fs = Promise.promisifyAll(require('fs'));
- var JSZip = require('jszip');
- var _ = require('underscore');
- var jsforce = require('jsforce');
- require('dotenv').load();
- //カスタムフィールドの完全名からカスタムオブジェクトのAPI参照名を取得
- _.mixin({
- objectNames:(fieldNames)=>{
- let objs = [];
- _.each(fieldNames, (e)=>{
- let objectName = e.match(/(.*)(?:\.([^.]+$))/)[1];
- if(!_.contains(objs, objectName)){
- objs.push(objectName);
- }
- });
- return objs;
- }
- });
- //Salesforce Idは画面上から与えられる
- var sfId = 'a0MN0000004aH3mMAE';
- //Excel templateは画面上から動的に与えられるがPOCでは固定Template
- var templatePath = './Template.xlsx';
- var conn = new jsforce.Connection({loginUrl : process.env.sf_host});
- var excelMerge = new ExcelMerge();
- Promise.all([
- fs.readFileAsync(templatePath).then((excelTemplate)=>(excelMerge.load(new JSZip(excelTemplate)))),
- conn.login(process.env.sf_username, process.env.sf_password)
- ]).then(()=>{
- let objectName = _.objectNames(excelMerge.variables())[0];
- return conn.sobject(objectName).find({ 'Id' : sfId}).execute();
- }).then((records)=>{
- console.log(records);
- }).catch((err)=>{
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement