Save Gmail Attachments Into Google Drive and Delete: CCTV Amcrest DVR Images

Updated: 12/17/2018.

Recently I learned about the change of terms for Flickr, where I save all my CCTV snapshot images coming from my Amcrest 960H HVR. They are triggered when there is movement detected. Granted, not that effective by default, but at least provides me with indications or patterns of something abnormal happening, which can then allow me to search the video recordings (I shall run them against media analytics services at some point).

Point is that I needed to find out an alternative for hosting my images, and no better option than Google Drive. The system already sends out images via email, and I had to figure out how to land them into Google Drive. Luckily I found out this post from Andreas Gohr, where he provides a script that takes Gmail attachments and saves them into Google Drive.

On a high level, the solution relies on two processes:

  1. Rule within Gmail that treats the incoming email
  2. Script that runs asynchronously, finds emails and copies the attachment to Google Drive.

The processes are well documented in Gohr’s post.

I took the original code, and modified to suite my needs:

  1. Extract the DVR snapshot attachment image.
  2. Make a copy into a Google Drive sub-folder, using a sub-string. Used the camera number as folder name.
  3. Create subfolder names based on year, month and date provided by the filename (sample: 03_20181202010558.jpg). The folder name will be re-used if it already exists.
  4. Delete the email (as I no longer needed once copied).

My Gmail rule differs a bit from the original poster:

  1. Mute the Conversation (it does not appear in the inbox)
  2. Mark as read (this might be optional)

The script for my code is located here.

Feel free to create your own copy and modify to suite your needs. Just make sure to follow the instructions including the authorization step. This is important as the scripts requires access to Gmail. Google will be sending out an email with “possible risk” to the account, but you can instruct through console that you are OK with the script.