Using Gmail JavaScript API to Search Email Threads

This code uses the Gmail JavaScript API to search the inbox of the authenticated user (userId = me) for email threads that match the specified query. You need to create a new project in Google developer console with the Gmail API enabled.

The scope can be “https://www.googleapis.com/auth/gmail.readonly” since this Gmail app requires only read only access to the user’s mailbox.

var threads = function listGmailThreads(userId, query, callback) {
    var getPageOfThreads = function (request, result) {
        request.execute(function (resp) {
            result = result.concat(resp.threads);
            var nextPageToken = resp.nextPageToken;
            if (nextPageToken) {
                request = gapi.client.gmail.users.threads.list({
                    'userId': userId,
                    'q': query,
                    'pageToken': nextPageToken
                });
                getPageOfThreads(request, result);
            } else {
                callback(result);
            }
        });
    };
    var request = gapi.client.gmail.users.threads.list({
        'userId': userId,
        'q': query
    });
    getPageOfThreads(request, []);
}