4D Netkit: Assign Labels & Get Multiple Emails with Gmail API

From 4D v20 R4, we are adding a duo of powerful enhancements to the Gmail command set.

The first feature allows you to retrieve several emails simultaneously, and the second one will enable you to manage label emails.

Keep reading for all the details.

HDI Google Manage Mails

Account connection

Before creating an email, we will create an OAuth 2.0 connection object and a Google object.

var $oAuth2 : cs.NetKit.OAuth2Provider
var $google : cs.NetKit.Google
$oAuth2:=cs.NetKit.OAuth2Provider.new($credentials)
$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"})

Add or remove email labels

Labels are used to categorize emails. They are similar to folders in other email systems. But what’s special about labels is that you can assign several labels to the same email. This label can be a custom or system label like INBOX, SPAM, TRASH, UNREAD, STARRED, or IMPORTANT. For example, an email can be labeled as “Work” and “IMPORTANT” with the .update() function:

$status:=$google.mail.update($mailIds; {addLabelIds: ["Work"; "IMPORTANT"]})

In the same way, you can remove labels from emails with the .update() function. For example, if you want to remove the UNREAD label:

$status:=$google.mail.update($mailIds; {removeLabelIds: ["UNREAD"]})

Download multiple emails

If you have several emails to retrieve, you can do it all at once with the .getMails() function:

$mailIds:=$google.mail.getMailIds({labelIds: ["INBOX","UNREAD"]})
// Gets the email according to the collection of mail ID
$mails:=$google.mail.getMails($mailIds)

The .getMails()  can get only 100 emails at once. If you need to get more emails, call this function several times.

In summary, this feature release enriches 4D’s Gmail command set, offering enhanced capabilities such as simultaneous email retrieval and efficient label management.

For detailed implementation, refer to the documentation.

Fabrice Mainguené
• Product Owner •Fabrice Mainguené joined 4D Program team in November, 2016. As a Product Owner, he is in charge of writing the user stories then translating it to functional specifications. His role is also to make sure that the feature implementation delivered is meeting the customer need.After obtaining a Bachelor degree in Computer Science at CNAM, Fabrice joined a small software publishing company as a Windev developer. Then he worked for different companies in industry and trade areas as a Windev and web developer as well as technical advisor on new features.