-
-
Save ZackStone/1c7c2f7ac98520c9c84d536880f96770 to your computer and use it in GitHub Desktop.
/* | |
https://webapps.stackexchange.com/questions/100820/how-do-i-invite-all-team-members-to-a-new-slack-channel#answer-104062 | |
Instructions: Just browse to the appropriate channel and paste | |
this script (below) into your Chrome/Firefox dev console and hit enter. | |
Then wait for the script to run until it completes. | |
It might take time as there is a limit to how many users may be invited at once. | |
The script will loop until all team members are invited. | |
*/ | |
var foundAny=false; | |
function selectAllByLetter(remainingLetters) { | |
console.log(remainingLetters) | |
var letter = remainingLetters.pop(); | |
$("#channel_invite_filter").val(letter).trigger("input"); | |
setTimeout(function() { | |
$(".channel_invite_member:not(hidden)").each(function(i, obj) { | |
foundAny=true; | |
this.click(); | |
}); | |
if (remainingLetters.length) { | |
selectAllByLetter(remainingLetters); | |
} else { | |
setTimeout(function() { | |
console.log("Inviting them all!") | |
$('.invite_go').click() | |
},400) | |
} | |
},300); | |
} | |
function inviteAllUsers() { | |
foundAny=false; | |
setTimeout(function () { | |
setTimeout(function() { | |
$('#channel_actions_toggle').click(); | |
},100) | |
setTimeout(function() { | |
$('#channel_invite_item').click(); | |
},200) | |
//Enter each letter to trigger searches | |
var remainingLetters = ["a","b","c","d","e","f","g","h","i","j","v","k","l","m","n","o","p","q","r","s","t","u","v","z"]; | |
selectAllByLetter(remainingLetters); | |
if (foundAny) { | |
inviteAllUsers(); | |
} | |
}, 4000); | |
} | |
inviteAllUsers(); |
This script also doesn't seem to work reliably for channels with more than 30 members. I played around with it a bit, but no luck. Even if I run it multiple times, it always missed about half of the members. In the end I just used this: http://slack-invite-all.com/
for teams / channels with thousands of members:
// re-run every 10 seconds. keep browser window open
setInterval(inviteAllUsers, 10000);
i wrote another one that won't land you in callback hell
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
var letters = ["a","b","c","d","e","f","g","h","i","j","v","k","l","m","n","o","p","q","r","s","t","u","v","z"];
async function inviteAllUsers() {
for(var i = 0; i < letters.length; i++){
await sleep(300);
$('#channel_actions_toggle').click();
await sleep(300);
$('#channel_invite_item').click();
await sleep(300);
for(var k = 0; k < letters.length; k++){
var word = letters[i] + letters[k];
await sleep(300);
$("#channel_invite_filter").val(word).trigger("input");
$(".channel_invite_member:not(hidden)").each(function(i, obj) {
foundAny=true;
this.click();
});
}
await sleep(300);
$('.invite_go').click()
}
}
inviteAllUsers();
setInterval(inviteAllUsers,600*1000);
also it seems that slack has updated this form so that 1 char input (a,b,c) won't be accpeted anymore.. my above script enumerates all the possible 2-char strings
@owocki Thanks, saved me from writing that up myself - worked like a charm! Do note that the above will invite all of your multi-channel guests as well, which may or may not be desired behavior.
Last one was still missing a few characters in the search..
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
var letters = 'abcdefghijklmnopqrstuvwxyz';
async function inviteAllUsers() {
for(var i = 0; i < letters.length; i++){
await sleep(300);
$('#channel_actions_toggle').click();
await sleep(300);
$('#channel_invite_item').click();
await sleep(300);
for(var k = 0; k < letters.length; k++){
var word = letters[i] + letters[k];
await sleep(300);
$("#channel_invite_filter").val(word).trigger("input");
$(".channel_invite_member:not(hidden)").each(function(i, obj) {
foundAny=true;
this.click();
});
}
await sleep(300);
$('.invite_go').click()
}
}
inviteAllUsers();
setInterval(inviteAllUsers,600*1000);
Slack must have updated their frontend, as now jQuery is no longer included in the codebase.
Therefore, this no longer works. 😞
Slack must have updated their frontend, as now jQuery is no longer included in the codebase.
Therefore, this no longer works. 😞
And that Chrome extension 404s now. We are without hope!
You can use Channel Tools, which is a Slack app, to invite all users to a Slack channel. Because the app relies on Slack API as opposed to its UI, you can trust that it won't break like all other solutions until now.
BUG: Misses usernames starting with W, X, Y
Try:
var remainingLetters = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];