Happy 1 year anniversary Google add-ons!

Post date: Mar 11, 2015 5:1:46 AM

Just a year ago, March 11, 2014, Google released add-ons for Docs & Sheets. As of today, there are 107 add-ons available for Google Sheets, 99 for Google Docs and 16 for Google Forms, bringing new features to the editors you love. And more are joining every week.

As for us, we now have 4 add-ons available to all on the add-on stores:

And it is just the beginning! We have nice roadmaps ahead of us for all those add-ons and ideas for quite a few more. Yet Another Mail Merge has proved that add-ons can be financially viable products and if you are a developer willing to join a nice team dedicated to add-ons and products for the Apps Marketplace (like Groups Directory), we are always hiring!

Everything is not perfect though. Not all developer partners have been happy with this new add-on platform and MailChimp, for example, decided to retire his Merge add-on a few weeks ago (I suppose they felt like they couldn't compete with Yet Another Mail Merge :)

Feedback from a user...

This part is mostly for add-on developers

The add-on feedback feature is still a nightmare and totally impossible to manage at scale. Since the beginning of this week, a bug is impacting nearly all add-ons and while Google is working on a fix, add-on developers are receiving hundreds of emails through this feedback tool.

I decided to do something about it.

Here's a little Apps Script code snippet you can use to fetch all Feedbacks emails and put them in a spreadsheet, with feedback and email address (when there is one!) nicely separated in 2 different columns.

Once you have all those feedback in a spreadsheet, there are different tools you can use to do some mass mailing / mail merge. If you don't have one already, I'll let you know I had great success with YAMM :P

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

function getFeedbacks() { var addonTitle = "Yet Another Mail Merge"; var onlyGetUnreadThreads = true; var markRead = true; var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; var lastRow = sheet.getLastRow(); var email_ids = ""; if(lastRow) email_ids = sheet.getRange(1, 2, lastRow).getValues().toString(); var query = "from:noreply@google.com subject:(" + addonTitle + ")"; if(onlyGetUnreadThreads) query += " is:unread"; var threads = GmailApp.search(query); for(var i = 0; i < threads.length; i++) { var messages = threads[i].getMessages(); for(var j = 0; j < messages.length; j ++) { if(messages[j].getFrom() == "noreply@google.com") { var id = messages[j].getId(); if(email_ids.indexOf(id) != -1) continue; var temp = messages[j].getPlainBody(); var feedback = temp.substring(temp.indexOf("sent you this feedback:") + 27, temp.indexOf("Open in Google Apps Script") - 4); var username = ""; if(temp.indexOf("Reported by") != -1) { var regExp = /\(([^)]+)\)/; var matches = regExp.exec(temp.substring(temp.indexOf("Reported by"), temp.indexOf("You're receiving these feedback"))); username = matches[1]; } sheet.appendRow([messages[j].getDate(), id, feedback, username, 0]); } } if(markRead) threads[i].markRead(); } sheet.sort(1); }