-
-
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"];