exportclassFriendGridimplementsINodeType{description:INodeTypeDescription={// Basic node details will go hereproperties:[// Resources and operations will go here],};// The execute method will go hereasyncexecute(this:IExecuteFunctions):Promise<INodeExecutionData[][]>{}}
{displayName:'Resource',name:'resource',type:'options',options:[{name:'Contact',value:'contact',},],default:'contact',noDataExpression:true,required:true,description:'Create a new contact',},
type 控制n8n为资源显示的UI元素类型,并告知n8n预期从用户处获取的数据类型。options会导致n8n添加一个下拉菜单,允许用户选择其中一个选项。更多信息请参阅Node UI elements。
{displayName:'Operation',name:'operation',type:'options',displayOptions:{show:{resource:['contact',],},},options:[{name:'Create',value:'create',description:'Create a contact',action:'Create a contact',},],default:'create',noDataExpression:true,},{displayName:'Email',name:'email',type:'string',required:true,displayOptions:{show:{operation:['create',],resource:['contact',],},},default:'',placeholder:'name@email.com',description:'Primary email for the contact',},
// Handle data coming from previous nodesconstitems=this.getInputData();letresponseData;constreturnData=[];constresource=this.getNodeParameter('resource',0)asstring;constoperation=this.getNodeParameter('operation',0)asstring;// For each item, make an API call to create a contactfor(leti=0;i<items.length;i++){if(resource==='contact'){if(operation==='create'){// Get email inputconstemail=this.getNodeParameter('email',i)asstring;// Get additional fields inputconstadditionalFields=this.getNodeParameter('additionalFields',i)asIDataObject;constdata:IDataObject={email,};Object.assign(data,additionalFields);// Make HTTP request according to https://sendgrid.com/docs/api-reference/constoptions:OptionsWithUri={headers:{'Accept':'application/json',},method:'PUT',body:{contacts:[data,],},uri:`https://api.sendgrid.com/v3/marketing/contacts`,json:true,};responseData=awaitthis.helpers.requestWithAuthentication.call(this,'friendGridApi',options);returnData.push(responseData);}}}// Map data to n8n data structurereturn[this.helpers.returnJsonArray(returnData)];
{// All node names must start with "n8n-nodes-""name":"n8n-nodes-friendgrid","version":"0.1.0","description":"n8n node to create contacts in SendGrid","keywords":[// This keyword is required for community nodes"n8n-community-node-package"],"license":"MIT","homepage":"https://n8n.io","author":{"name":"Test","email":"test@example.com"},"repository":{"type":"git",// Change the git remote to your own repository// Add the new URL here"url":"git+<your-repo-url>"},"main":"index.js","scripts":{// don't change},"files":["dist"],// Link the credentials and node"n8n":{"n8nNodesApiVersion":1,"credentials":["dist/credentials/FriendGridApi.credentials.js"],"nodes":["dist/nodes/FriendGrid/FriendGrid.node.js"]},"devDependencies":{// don't change},"peerDependencies":{// don't change}}