DataFlex
DataFlex
Download GMail Message Attachment by ID
See more GMail REST API Examples
Demonstrates how to download a GMail email attachment by the attachment ID.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoHttp
String sAttachmentId
String sMessageId
String sUrl
String sOutputFilePath
Variant vSbJson
Handle hoSbJson
Handle hoJson
Variant vBd
Handle hoBd
String sTemp1
Integer iTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
Set ComAuthToken Of hoHttp To "ACCESS_TOKEN"
Set ComAccept Of hoHttp To "application/json"
// See the following example: Get GMail Message (format=full)
// It shows how to download an email by message ID, and it shows how to parse the JSON
// response which includes attachment names, ids, and other information.
// This example will assume we already have the attachment id and filename.
// This is the attachment ID for a file named "helloWorld.pdf".
Move "ANGjdJ-oy3aCuZISJKLAhUdaEksCEklbAPyMaWzFgqOMGbPCRkgwgeu_Kttd99C17OBTHROkDZGekibTKWXGfscB5ww7fw4E65_V1dQ-jHhb2TD1Cdm58-BbNw2iDxzptco8iILPiSnLLfFn5Ps7nsRcxHaGTt3r0yqFKCuIYNnPK1vM04BXI_cfzo-HnI4I3tD6oHNHOGVQrL01MdShFQjPELPUjXM8z1qs7Kom-QyvV1iOldUN-66UuhynsmDX-CMM5TIdB-8KD_lmdhf-0DqG8JnCA20XpXyfqwS8XFkPA-t-QSjb7SdkHQFtQ4lz2PcBREFzZ2eI5j0l0Y_dQHRPYTeMwkVl1yl4MfFT4C4iso3VSF-eqaIjiFCbXKCFNyeEIW5WFsv189dhlSqU" To sAttachmentId
Move "1712bc1dc22da2a2" To sMessageId
Get ComSetUrlVar Of hoHttp "messageId" sMessageId To iSuccess
Get ComSetUrlVar Of hoHttp "attachmentId" sAttachmentId To iSuccess
Move "https://www.googleapis.com/gmail/v1/users/userId/messages/{$messageId}/attachments/{$attachmentId}" To sUrl
// When we download, the response is JSON that contains the attachment data base64url encoded, like this:
// {
// "size": 934,
// "data": "JVBERi0xLjM ... CiUlRU9GCg=="
// }
Move "qa_output/helloWorld.pdf" To sOutputFilePath
// Download into a StringBuilder.
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbJson
If (Not(IsComObjectCreated(hoSbJson))) Begin
Send CreateComObject of hoSbJson
End
Get pvComObject of hoSbJson to vSbJson
Get ComDownloadSb Of hoHttp sUrl "utf-8" vSbJson To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComLastStatus Of hoHttp To iTemp1
If (iTemp1 <> 200) Begin
// Something failed.
// the JSON contains an error message.
Get ComGetAsString Of hoSbJson To sTemp1
Showln sTemp1
Procedure_Return
End
// Load into a Chilkat JSON object.
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Get pvComObject of hoSbJson to vSbJson
Get ComLoadSb Of hoJson vSbJson To iSuccess
// Extract the base64url data into a BinData.
Get Create (RefClass(cComChilkatBinData)) To hoBd
If (Not(IsComObjectCreated(hoBd))) Begin
Send CreateComObject of hoBd
End
Get pvComObject of hoBd to vBd
Get ComBytesOf Of hoJson "data" "base64url" vBd To iSuccess
// Save the data to a file.
Get ComWriteFile Of hoBd "qa_output/helloWorld.pdf" To iSuccess
Showln "Success."
End_Procedure