14

Doesn't seem like iTunes connect has basic exporting of user emails from Prerelease > External testers

Needed to export emails to CSV

Does anyone have a script or workaround solution?

Thanks!

amleszk
  • 6,192
  • 5
  • 38
  • 43

13 Answers13

15

You can use pilot (from Fastlane) to do that :

To export in a CSV file: fastlane pilot export

$ fastlane pilot list

+--------+--------+--------------------------+-----------+
|                    Internal Testers                    |
+--------+--------+--------------------------+-----------+
| First  | Last   | Email                    | # Devices |
+--------+--------+--------------------------+-----------+
| Felix  | Krause | felix@krausefx.com       | 2         |
+--------+--------+--------------------------+-----------+

+-----------+---------+----------------------------+-----------+
|                       External Testers                       |
+-----------+---------+----------------------------+-----------+
| First     | Last    | Email                      | # Devices |
+-----------+---------+----------------------------+-----------+
| Max       | Manfred | email@email.com            | 0         |
| Detlef    | Müller  | detlef@krausefx.com        | 1         |
+-----------+---------+----------------------------+-----------+
Koen.
  • 25,449
  • 7
  • 83
  • 78
Rémy Virin
  • 3,379
  • 23
  • 42
12

Just use console get Email, First Name, Last Name

Paste this into console https://gist.github.com/creaoy/80d1092283a5d0fa1070

creaoy
  • 136
  • 1
  • 4
  • 3
    this answer worked surprisingly well. for new folks (me), to use console -> https://developer.chrome.com/devtools/docs/console (thank you @creaoy) – tmr Jan 27 '16 at 08:45
4

Upon trial and error (because I'm desperate), I found a way out, the low tech way.

Go to Activity > iOS History > All Builds > Testers

This is the page where you see all of your external and internal testers' emails, name, status, sessions, crashes and devices. Select all rows and paste them into excel. It will display all information in each cell nicely :) Select the first column in excel and you have all the emails only.

Sue Anne C
  • 61
  • 5
2

I expanded creaoy's script to include the Status (Notified/Installed x.xx). Still works for me today.

Scroll all the way down so all testers are loaded. Then paste this in Safari's error console and hit enter.

var text = ''; 
$('.col-email').each(function(index,el) { 
if (index == 0) {
    text = 'Email, First Name, Last Name, Status\n';
}
else {
    //Email
    text = text + $.trim($(el).find("a").text()) + ',';
    //First Name
    text = text + $.trim($($($($('.col-name')[index]).find("span")[0]).find("span")[0]).text()) + ',';
    //Last Name
    text = text + $.trim($($($($('.col-name')[index]).find("span")[0]).find("span")[1]).text()) + ',';
    //Status
    text = text + $.trim($($($($('.col-status')[index]).find("div")[0]).find("span")[0]).text()) + '\n';
}
}); 
var a = document.createElement("a"); 
var file = new Blob([text], {type: 'text/csv'});
 a.href = URL.createObjectURL(file); 
 a.download = name; a.click();
guido
  • 2,792
  • 1
  • 21
  • 40
1

Not as yet. You can only import a csv file but not create one from the users there.

You can copy the rows, edit them in TextEdit/Notepad in the format: fistname,lastname,email

and save that as csv to use when you want to import those emails later.

It would be good if they implemented it to do this automatically, or at least having the option to send the updates to specific groups that you can create.

Vrasidas
  • 2,085
  • 1
  • 17
  • 23
1

I made a little console hack that extracts just the emails. Improve to your liking :-)

https://gist.github.com/larsparendt/a67d25b1611db67ba67b

lpa
  • 710
  • 6
  • 14
1

Some great answers, but wanted to add another option. BoardingBot is a tool that lets you send TestFlight invites automatically, as well as emails to your beta testers. So this might fill your need for contacting your beta testers.

Disclaimer: I'm the founder of BoardingBot :)

Alon Burg
  • 2,500
  • 2
  • 27
  • 32
0

Edit:

The below method is flakey - there is a great ruby gem for managing testflight testers called Fastlane pilot. I woudl recommend looking into that instead: https://github.com/fastlane/fastlane/tree/master/pilot


Found a google chrome extension that will do the job:

Table capture:https://chrome.google.com/webstore/detail/table-capture/iebpjdmgckacbodjpijphcplhebcmeop/reviews?hl=en

Also needed to filter out duplicates, which can be done using Google spreadsheets

amleszk
  • 6,192
  • 5
  • 38
  • 43
0

Since iTunes Connect is now an angular app, many of the answers on this page no longer work. However if you have the Angular/Batarang extension for Chrome you can paste this script in the console (cmd+i) and it will spit out a csv. Note that first you have to inspect an item in the list (cmd + shift + c) to get a reference to $scope. Also don't forget to scroll down to make the page auto-load the whole list.

var text = ''; 
angular.forEach($scope.filteredTesters, function(val) {
    text += val.firstName.value + ',';
    text += val.lastName.value + ',';
    text += val.emailAddress.value + '\n';
}); 
var a = document.createElement("a"); 
var file = new Blob([text], {type: 'text/csv'});
a.href = URL.createObjectURL(file); 
a.download = name; a.click();
inorganik
  • 24,255
  • 17
  • 90
  • 114
0

If you just need the emails and have a text editor with regex replacement you can do this

  1. Scroll to the bottom of the list in itunesconnect so you get all rows
  2. Copy all the rows into text editor of your choice (I used sublime text)
  3. replace ^.*\n\n with <empty string>. This removes all names
  4. replace \n\s\n with ,.
  5. replace \n with ,.

and you're left with a CSV of all the emails

wyu
  • 1,793
  • 17
  • 33
0

if like me you also needed the date this is the code you need:

var text = ''; 
$('.col-email').each(function(index,el) { 
if (index == 0) {
    text = 'Email, First Name, Last Name, Status, Date\n';
}
else {
    //Email
    text = text + $.trim($(el).find("a").text()) + ',';
    //First Name
    text = text + $.trim($($($($('.col-name')[index]).find("span")[0]).find("span")[0]).text()) + ',';
    //Last Name
    text = text + $.trim($($($($('.col-name')[index]).find("span")[0]).find("span")[1]).text()) + ',';
    //Status
    text = text + $.trim($($($($('.col-status')[index]).find("div")[0]).find("span")[0]).text()) + ',';
 //Date
 text = text + '\"' + $.trim($($($($('.col-status')[index]).find("div")[0]).find("span")[2]).text()) + '\"\n';
}
}); 
var a = document.createElement("a"); 
var file = new Blob([text], {type: 'text/csv'});
 a.href = URL.createObjectURL(file); 
 a.download = name; a.click();
Allen Smith
  • 388
  • 1
  • 10
0

I came up with a jQuery solution to output this data to the console in CSV format. It is dependent on the way that the pages selectors are set up but as of now (Sep. 2017), it runs great.

Open up the console on your browser (I use Chrome), copy and paste this code in, hit enter. Quick and dirty.

Edit

I borrowed some code from guido's answer here that triggers an automatic download after hitting enter.

output = "email,first name,last name\n";

jQuery('table.table-itc-testers tr[ng-repeat*="itcUser"]').each(function(){
    row = [];

    //Email Address
    row.push(jQuery(this).find('span a[href*="users_roles"]').text());

    // First and last name
    full_name = jQuery(this).find('td.sorted > span:not(.ng-hide)');

    // If only name is filled out
    if(full_name==""){
        row.push("");
        row.push("");
    } else {
    row.push(full_name.clone().children().remove().end().text().trim());
        row.push(full_name.find('span.lastname').text());
    }

    output += row.join(",") + "\n";
});

var a = document.createElement("a"); 
var file = new Blob([output], {type: 'text/csv'});
a.href = URL.createObjectURL(file); 
a.download = 'external_testers.csv'; a.click();
MillerMedia
  • 3,651
  • 17
  • 71
  • 150
0

Quick Update with a new answer: iTunes Connect now has an easy-to-use download button on the right side of the page!

Click Here

Aaron Sarazan
  • 305
  • 1
  • 4