Handle comma separated binary properties (Gmail) (#1711)

This commit is contained in:
Ricardo Espinoza 2021-04-30 15:44:46 -04:00 committed by GitHub
parent 029b1390ee
commit 444fe64bc1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 65 additions and 61 deletions

View file

@ -209,7 +209,8 @@ export const draftFields = [
name: 'property',
type: 'string',
default: '',
description: 'Name of the binary property containing the data to be added to the email as an attachment',
description: `Name of the binary property containing the data to be added to the email as an attachment.</br>
Multiples can be set separated by comma.`,
},
],
},

View file

@ -325,28 +325,29 @@ export class Gmail implements INodeType {
if (additionalFields.attachmentsUi) {
const attachmentsUi = additionalFields.attachmentsUi as IDataObject;
let attachmentsBinary = [];
const attachmentsBinary = [];
if (!isEmpty(attachmentsUi)) {
if (attachmentsUi.hasOwnProperty('attachmentsBinary')
&& !isEmpty(attachmentsUi.attachmentsBinary)
&& items[i].binary) {
// @ts-ignore
attachmentsBinary = attachmentsUi.attachmentsBinary.map((value) => {
if (items[i].binary!.hasOwnProperty(value.property)) {
const aux: IAttachments = { name: '', content: '', type: '' };
aux.name = items[i].binary![value.property].fileName || 'unknown';
aux.content = items[i].binary![value.property].data;
aux.type = items[i].binary![value.property].mimeType;
return aux;
}
for (const { property } of attachmentsUi.attachmentsBinary as IDataObject[]) {
for (const binaryProperty of (property as string).split(',')) {
if (items[i].binary![binaryProperty] !== undefined) {
const binaryData = items[i].binary![binaryProperty];
attachmentsBinary.push({
name: binaryData.fileName || 'unknown',
content: binaryData.data,
type: binaryData.mimeType,
});
}
}
}
}
qs = {
userId: 'me',
uploadType: 'media',
};
attachmentsList = attachmentsBinary;
}
}
@ -408,32 +409,32 @@ export class Gmail implements INodeType {
if (additionalFields.attachmentsUi) {
const attachmentsUi = additionalFields.attachmentsUi as IDataObject;
let attachmentsBinary = [];
const attachmentsBinary = [];
if (!isEmpty(attachmentsUi)) {
if (attachmentsUi.hasOwnProperty('attachmentsBinary')
&& !isEmpty(attachmentsUi.attachmentsBinary)
&& items[i].binary) {
// @ts-ignore
attachmentsBinary = attachmentsUi.attachmentsBinary.map((value) => {
if (items[i].binary!.hasOwnProperty(value.property)) {
const aux: IAttachments = { name: '', content: '', type: '' };
aux.name = items[i].binary![value.property].fileName || 'unknown';
aux.content = items[i].binary![value.property].data;
aux.type = items[i].binary![value.property].mimeType;
return aux;
}
for (const { property } of attachmentsUi.attachmentsBinary as IDataObject[]) {
for (const binaryProperty of (property as string).split(',')) {
if (items[i].binary![binaryProperty] !== undefined) {
const binaryData = items[i].binary![binaryProperty];
attachmentsBinary.push({
name: binaryData.fileName || 'unknown',
content: binaryData.data,
type: binaryData.mimeType,
});
}
}
}
}
qs = {
userId: 'me',
uploadType: 'media',
};
attachmentsList = attachmentsBinary;
}
}
// if no recipient is defined then grab the one who sent the email
if (toStr === '') {
endpoint = `/gmail/v1/users/me/messages/${id}`;
@ -628,28 +629,29 @@ export class Gmail implements INodeType {
if (additionalFields.attachmentsUi) {
const attachmentsUi = additionalFields.attachmentsUi as IDataObject;
let attachmentsBinary = [];
const attachmentsBinary = [];
if (!isEmpty(attachmentsUi)) {
if (attachmentsUi.hasOwnProperty('attachmentsBinary')
&& !isEmpty(attachmentsUi.attachmentsBinary)
&& items[i].binary) {
// @ts-ignore
attachmentsBinary = attachmentsUi.attachmentsBinary.map((value) => {
if (items[i].binary!.hasOwnProperty(value.property)) {
const aux: IAttachments = { name: '', content: '', type: '' };
aux.name = items[i].binary![value.property].fileName || 'unknown';
aux.content = items[i].binary![value.property].data;
aux.type = items[i].binary![value.property].mimeType;
return aux;
}
for (const { property } of attachmentsUi.attachmentsBinary as IDataObject[]) {
for (const binaryProperty of (property as string).split(',')) {
if (items[i].binary![binaryProperty] !== undefined) {
const binaryData = items[i].binary![binaryProperty];
attachmentsBinary.push({
name: binaryData.fileName || 'unknown',
content: binaryData.data,
type: binaryData.mimeType,
});
}
}
}
}
qs = {
userId: 'me',
uploadType: 'media',
};
attachmentsList = attachmentsBinary;
}
}

View file

@ -226,30 +226,6 @@ export const messageFields = [
},
default: {},
options: [
{
displayName: 'CC Email',
name: 'ccList',
type: 'string',
description: 'The email addresses of the copy recipients.',
typeOptions: {
multipleValues: true,
multipleValueButtonText: 'Add CC Email',
},
placeholder: 'info@example.com',
default: [],
},
{
displayName: 'BCC Email',
name: 'bccList',
type: 'string',
description: 'The email addresses of the blind copy recipients.',
typeOptions: {
multipleValues: true,
multipleValueButtonText: 'Add BCC Email',
},
placeholder: 'info@example.com',
default: [],
},
{
displayName: 'Attachments',
name: 'attachmentsUi',
@ -268,7 +244,8 @@ export const messageFields = [
name: 'property',
type: 'string',
default: '',
description: 'Name of the binary properties which contain data which should be added to email as attachment',
description: `Name of the binary property containing the data to be added to the email as an attachment.</br>
Multiples can be set separated by comma.`,
},
],
},
@ -276,6 +253,30 @@ export const messageFields = [
default: '',
description: 'Array of supported attachments to add to the message.',
},
{
displayName: 'BCC Email',
name: 'bccList',
type: 'string',
description: 'The email addresses of the blind copy recipients.',
typeOptions: {
multipleValues: true,
multipleValueButtonText: 'Add BCC Email',
},
placeholder: 'info@example.com',
default: [],
},
{
displayName: 'CC Email',
name: 'ccList',
type: 'string',
description: 'The email addresses of the copy recipients.',
typeOptions: {
multipleValues: true,
multipleValueButtonText: 'Add CC Email',
},
placeholder: 'info@example.com',
default: [],
},
],
},
{