feat(Gmail Node): Add support for creating drafts using an alias (#8728)

Co-authored-by: Jonathan Bennetts <jonathan.bennetts@gmail.com>
This commit is contained in:
Nicolas-nwb 2024-04-25 13:37:29 +02:00 committed by GitHub
parent 2dd0b329ca
commit 3986356c89
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 73 additions and 0 deletions

View file

@ -186,6 +186,52 @@ export const draftFields: INodeProperties[] = [
default: {}, default: {},
description: 'Array of supported attachments to add to the message', description: 'Array of supported attachments to add to the message',
}, },
{
displayName: 'BCC',
name: 'bccList',
type: 'string',
description:
'The email addresses of the blind copy recipients. Multiple addresses can be separated by a comma. e.g. jay@getsby.com, jon@smith.com.',
placeholder: 'info@example.com',
default: '',
},
{
displayName: 'CC',
name: 'ccList',
type: 'string',
description:
'The email addresses of the copy recipients. Multiple addresses can be separated by a comma. e.g. jay@getsby.com, jon@smith.com.',
placeholder: 'info@example.com',
default: '',
},
{
displayName: 'From Alias Name or ID',
name: 'fromAlias',
type: 'options',
default: '',
description:
'Select the alias to send the email from. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
typeOptions: {
loadOptionsMethod: 'getGmailAliases',
},
},
{
displayName: 'Send Replies To',
name: 'replyTo',
type: 'string',
placeholder: 'reply@example.com',
default: '',
description: 'The email address that the reply message is sent to',
},
{
displayName: 'To Email',
name: 'sendTo',
type: 'string',
default: '',
placeholder: 'info@example.com',
description:
'The email addresses of the recipients. Multiple addresses can be separated by a comma. e.g. jay@getsby.com, jon@smith.com.',
},
], ],
}, },
{ {

View file

@ -197,6 +197,27 @@ export class GmailV2 implements INodeType {
return returnData; return returnData;
}, },
async getGmailAliases(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {
const returnData: INodePropertyOptions[] = [];
const { sendAs } = await googleApiRequest.call(
this,
'GET',
'/gmail/v1/users/me/settings/sendAs',
);
for (const alias of sendAs || []) {
const displayName = alias.isDefault
? `${alias.sendAsEmail} (Default)`
: alias.sendAsEmail;
returnData.push({
name: displayName,
value: alias.sendAsEmail,
});
}
return returnData;
},
}, },
}; };
@ -528,6 +549,7 @@ export class GmailV2 implements INodeType {
let cc = ''; let cc = '';
let bcc = ''; let bcc = '';
let replyTo = ''; let replyTo = '';
let fromAlias = '';
let threadId = null; let threadId = null;
if (options.sendTo) { if (options.sendTo) {
@ -546,6 +568,10 @@ export class GmailV2 implements INodeType {
replyTo = prepareEmailsInput.call(this, options.replyTo as string, 'ReplyTo', i); replyTo = prepareEmailsInput.call(this, options.replyTo as string, 'ReplyTo', i);
} }
if (options.fromAlias) {
fromAlias = options.fromAlias as string;
}
if (options.threadId && typeof options.threadId === 'string') { if (options.threadId && typeof options.threadId === 'string') {
threadId = options.threadId; threadId = options.threadId;
} }
@ -567,6 +593,7 @@ export class GmailV2 implements INodeType {
} }
const email: IEmail = { const email: IEmail = {
from: fromAlias,
to, to,
cc, cc,
bcc, bcc,