Skip to content

Commit 8762803

Browse files
author
Emil Öhman
authored
Utv (#80)
* Lagt till kontaktsynkronisering #16 * Rättat en bugg med att fel namn sätts för användare #47 * Flyttat om koden för att möjliggöra användande av bibliotek #50 * Lagt till extra koll att användare finns så att skriptet ej kraschar #53 * Lagt till flera olika loggnivåer. t.ex console.info, log, warn och error #54 * Gjort det möjligt att skriva ut antal medlemmar i loggen #56 * Grupper - Ändrat så att grupp-ID fylls i för redan skapade grupper i kalkylarket om det saknas där #57 * Gått över till HTTP Header auth vid anrop mot Scoutnet #58 * Ändrat logik för att sätta återställningsnummer för användare #64 * Fixat problem med synkning av profilbild från Scoutnet #65 * Grupper - Lagt till kolumn för att sätta etikett för olika grupper och synka enbart vissa etiketter #68 * Medlemslistor - Lagt till stöd för att synkronisera smeknamn från Scoutnet #69 * Bytt ut deklarationer av var, let, const #71 * Medlemslistor - Går nu att koppla dokument med URL också * Lagt till variabel i Konfiguration.gs om statistik om användningen av skriptet kan delas med utvecklaren. Ingen funktionalitet är implementerad för detta i nuläget.
1 parent 1788793 commit 8762803

14 files changed

+8415
-4105
lines changed

Anvandare.gs

Lines changed: 7 additions & 673 deletions
Large diffs are not rendered by default.

Bibliotek/Anvandare-lib.gs

Lines changed: 725 additions & 0 deletions
Large diffs are not rendered by default.

Bibliotek/Gemensamma_funktioner-lib.gs

Lines changed: 1262 additions & 0 deletions
Large diffs are not rendered by default.

Bibliotek/Grupper-lib.gs

Lines changed: 1607 additions & 0 deletions
Large diffs are not rendered by default.

Bibliotek/Kontakter-Admin-lib.gs

Lines changed: 1653 additions & 0 deletions
Large diffs are not rendered by default.

Bibliotek/Medlemslistor-lib.gs

Lines changed: 1109 additions & 0 deletions
Large diffs are not rendered by default.

Gemensamma_funktioner.gs

Lines changed: 1 addition & 765 deletions
Large diffs are not rendered by default.

Grupper.gs

Lines changed: 33 additions & 1498 deletions
Large diffs are not rendered by default.

Konfiguration.gs

Lines changed: 93 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,39 +3,52 @@
33
* @website https://github.com/Scouterna
44
*/
55

6-
var domain = 'hasselbyscout.se'; //Domänen/Webbsideadressen utan till kåren utan www och som används i Google Workspace
76

8-
var groupId = '12'; //Kårens id som kan hittas i Scoutnet om du har tillräcklig behörighet
7+
/**
8+
* Kontrollerar om inställningarna i Konfiguration.gs verkar korrekta
9+
*/
10+
function checkKonfigIsOk() {
11+
ScoutnetSynkLib.checkDataFromKonfig(KONFIG_OBJECT);
12+
}
13+
14+
const KONFIG_OBJECT = {};
15+
16+
KONFIG_OBJECT.DOMAIN = "hasselbyscout.se"; //Domänen/Webbsideadressen utan till kåren utan www och som används i Google Workspace
17+
18+
KONFIG_OBJECT.SCOUTNET_GROUP_ID = "12"; //Kår-ID för webbtjänster som kan hittas i Scoutnet om du har tillräcklig behörighet
919

1020

1121
//Get a detailed csv/xls/json list of all members
1222
//Används bland annat för att synkronisera användarkonton med Scoutnet
1323
//Används vid synkronisering för kårer, ej distrikt
14-
var api_key_list_all = '999888777315979a2a864664695671c7dfe7'; //Kan hittas i Scoutnet om du har tillräcklig behörighet
24+
KONFIG_OBJECT.API_KEY_LIST_ALL = "999888777315979a2a864664695671c7dfe7"; //Kan hittas i Scoutnet om du har tillräcklig behörighet
1525

1626
//Get a csv/xls/json list of members, based on mailing lists you have set up
1727
//Används bland annat för att synkronisera Google grupper med Scoutnet
18-
var api_key_mailinglists = '11122233356454d0dce624'; //Kan hittas i Scoutnet om du har tillräcklig behörighet
28+
KONFIG_OBJECT.API_KEY_MAILINGLISTS = "11122233356454d0dce624"; //Kan hittas i Scoutnet om du har tillräcklig behörighet
1929

2030
//E-post eller scoutnetListId för vart mejl om misstänkt spam till grupper ska skickas till
2131
//För e-postlistor som anges skickas endast till primär e-postadress listad i Scoutnet
22-
//T.ex 'webmaster@minscoutkår.se, 1234'
23-
var moderateContentEmail = '';
32+
//T.ex "webmaster@minscoutkår.se, 1234"
33+
KONFIG_OBJECT.MODERATE_CONTENT_EMAIL = "";
2434

2535
//Inställning om viss kontaktinformation ska synkroniseras till användares Google Workspace-konto
26-
var syncUserContactInfo = true;
36+
KONFIG_OBJECT.SYNC_USER_CONTACT_INFO = true;
2737

2838
//Inställning om medlems profilbild ska synkroniseras till användares Google Workspace-konto
29-
var syncUserAvatar = true;
39+
KONFIG_OBJECT.SYNC_USER_AVATAR = true;
40+
41+
//Inställning om statistik över funktioner som körs och kontaktinformation till kåren ska delas med utvecklaren
42+
KONFIG_OBJECT.SHARE_STATISTICS_OF_RUNNING_SCRIPTS_AND_GROUP_INFORMATION = false; //Ändra till true om du vill dela statistik
3043

3144
//Adress till profilbild att använda för Googlekonton om ingen finns i Scoutnet
32-
var defaultUserAvatarUrl = "https://web.cdn.scouterna.net/uploads/sites/57/2021/05/avatar.png";
45+
KONFIG_OBJECT.DEFAULT_USER_AVATAR_URL = "https://web.cdn.scouterna.net/uploads/sites/57/2021/05/avatar.png";
3346

3447
//Typ av organisationsenhet
35-
var organisationType = 'group'; //Ska enbart ändras om du kör programmet för ett distrikt. Ska då bytas till district
48+
KONFIG_OBJECT.ORGANISATION_TYPE = "group"; //Ska enbart ändras om du kör programmet för ett distrikt. Ska då bytas till district
3649

3750
//Adressen till Scoutnet. Ska ej ändras
38-
var scoutnet_url = 'www.scoutnet.se'; //Scoutnets webbadress
51+
KONFIG_OBJECT.SCOUTNET_URL = "www.scoutnet.se"; //Scoutnets webbadress
3952

4053

4154
/**
@@ -48,7 +61,7 @@ var scoutnet_url = 'www.scoutnet.se'; //Scoutnets webbadress
4861
* Det går att ha flera nivår på underorgansiationer. T.ex /Scoutnet/Kårfunktionärer/Ledare/Spårarledare vilket då skrivs
4962
* som Kårfunktionärer/Ledare/Spårarledare nedan
5063
*/
51-
var userAccountConfig = [
64+
KONFIG_OBJECT.USER_ACCOUNT_CONFIG = [
5265
{
5366
scoutnetListId: "1234", //
5467
orgUnitPath: "Styrelsen", //om du skriver Ledare så är det egentligen underorganisationen /Scoutnet/Ledare
@@ -65,3 +78,71 @@ var userAccountConfig = [
6578
description: "Ledare, Utmanare, Rover, Kårfunktionärer"
6679
}
6780
];
81+
82+
83+
/**
84+
* Inställningar för Kontaktgrupper
85+
*/
86+
//Scoutkårens namn
87+
KONFIG_OBJECT.GROUP_NAME = "Testmall Scoutkår";
88+
89+
//Max antal tvingade uppdatering per användare tills det nollställs
90+
KONFIG_OBJECT.MAX_NUMBER_OF_CONTACTS_FORCE_UPDATE = 10;
91+
92+
//Om information om vuxnas anhöriga ska synkroniseras eller ej. Om de synkroniseras hamnar de i noteringsfältet
93+
KONFIG_OBJECT.STORE_CONTACTS_RELATIVES_FOR_ADULTS = false;
94+
95+
//Ämne på e-post som skickar användaruppgifter för kontaktsynkronisering
96+
KONFIG_OBJECT.CONTACT_GROUPS_EMAIL_CREDENTIALS_SUBJECT = "Användaruppgifter - Google kontaktgrupper synkning";
97+
98+
//Avsändarnamn på e-post som skickar användaruppgifter för kontaktsynkronisering
99+
//Om inget sätts används namnet på användarkontot som kör skriptet
100+
KONFIG_OBJECT.CONTACT_GROUPS_EMAIL_CREDENTIALS_SENDER_NAME = "";
101+
102+
//Avsändare-post på e-post som skickar användaruppgifter för kontaktsynkronisering
103+
//Avsändaradressen måste finnas upplagd som alias i din Gmail
104+
KONFIG_OBJECT.CONTACT_GROUPS_EMAIL_CREDENTIALS_SENDER_FROM = "";
105+
106+
//Skapa din egen med hjälp av funktionen testGetHtmlEmailBody
107+
/***Brödtext enkel***/
108+
KONFIG_OBJECT.CONTACT_GROUPS_EMAIL_CREDENTIALS_PLAINBODY = "Hej, Du har nyss försökt autentisera dig med en felaktig kombination av e-postadress och lösenord för att synkronisera kontaktgrupper. Vänligen använd följande uppgifter i stället: E-postadress: {{userEmail}} Lösenord: {{password}} Mvh " + KONFIG_OBJECT.GROUP_NAME;
109+
/***Brödtext enkel - Slut***/
110+
111+
/***Brödtext Html***/
112+
KONFIG_OBJECT.CONTACT_GROUPS_EMAIL_CREDENTIALS_HTMLBODY = '<div dir="ltr">Hej,<div><br></div><div>Du har nyss försökt autentisera dig med en felaktig kombination av e-postadress och lösenord för att synkronisera kontaktgrupper.</div><div><br></div><div>Vänligen använd följande uppgifter i stället:</div><div><br></div><div>E-postadress: {{userEmail}}</div><div>Lösenord: {{password}}</div><div><br></div><div>Mvh</div><div>' + KONFIG_OBJECT.GROUP_NAME + '</div></div>';
113+
/***Brödtext Html - Slut***/
114+
115+
116+
/**
117+
* Inställningar för Kontaktgrupper - skicka e-brev vid inkomplett medlemsmatchning
118+
*/
119+
//Ämne på e-post som upplyser om inkomplett matchning mellan två medlemmar (ett barn och en vuxen)
120+
KONFIG_OBJECT.CONTACT_GROUPS_EMAIL_PARTIAL_MEMBER_MATCH_SUBJECT = "Inkomplett medlemsprofil i Scoutnet funnen - {{memberFullname}}";
121+
122+
//Mottagaradress för vart e-brev som upplyser om inkomplett matchning mellan två medlemmar (ett barn och en vuxen) ska skickas
123+
//Vanligtvis e-postadressen till kårens medlemsansvarig
124+
//Om inget sätt kommer inte några e-brev skickas som upplyser om inkomplett matchning
125+
KONFIG_OBJECT.CONTACT_GROUPS_EMAIL_PARTIAL_MEMBER_MATCH_TO = "";
126+
127+
//Avsändarnamn på e-post som upplyser om inkomplett matchning mellan två medlemmar (ett barn och en vuxen)
128+
//Om inget sätts används namnet på användarkontot som kör skriptet
129+
KONFIG_OBJECT.CONTACT_GROUPS_EMAIL_PARTIAL_MEMBER_MATCH_SENDER_NAME = "";
130+
131+
//Avsändare-post som upplyser om inkomplett matchning mellan två medlemmar (ett barn och en vuxen)
132+
//Avsändaradressen måste finnas upplagd som alias i din Gmail
133+
KONFIG_OBJECT.CONTACT_GROUPS_EMAIL_PARTIAL_MEMBER_MATCH_SENDER_FROM = "";
134+
135+
//Skapa din egen med hjälp av funktionen testGetHtmlEmailBody
136+
/***Brödtext enkel***/
137+
KONFIG_OBJECT.CONTACT_GROUPS_EMAIL_PARTIAL_MEMBER_MATCH_PLAINBODY = "Hej, En inkomplett matchning har hittats mellan två medlemmar (ett barn och en vuxen) i Scoutnet. Vänligen komplettera uppgifterna med e-post/telefonnummer för medlem {{memberFullname}} i fältet Anhörig {{relativeNumber}} hos denna medlem. Direktlänk för denna medlem är https://" + KONFIG_OBJECT.SCOUTNET_URL + "/organisation/user/{{member_no}} Mvh " + KONFIG_OBJECT.GROUP_NAME;
138+
/***Brödtext enkel - Slut***/
139+
140+
/***Brödtext Html***/
141+
KONFIG_OBJECT.CONTACT_GROUPS_EMAIL_PARTIAL_MEMBER_MATCH_HTMLBODY = '<div dir="ltr">Hej,<div><br></div><div>En inkomplett matchning har hittats mellan två medlemmar (ett barn och en vuxen) i Scoutnet. </div><div><br></div><div>Vänligen komplettera uppgifterna med e-post/telefonnummer för medlem {{memberFullname}} i fältet Anhörig {{relativeNumber}} hos denna medlem.</div><div><br></div><div>Direktlänk för denna medlem är https://' + KONFIG_OBJECT.SCOUTNET_URL + '/organisation/user/{{member_no}}</div><div><br></div><div>Mvh</div><div>' + KONFIG_OBJECT.GROUP_NAME + '</div></div>';
142+
/***Brödtext Html - Slut***/
143+
144+
//Ord som står i en medlems anteckningar som ska med i synkning men bytas ut mot något annat
145+
KONFIG_OBJECT.NOTE_KEYS_TO_REPLACE = [
146+
["lEdare", "Förälder har ledarintresse"],
147+
["Rabatt", "Rabatter i butiker av intresse"]
148+
];

Kontakter-Admin.gs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/**
2+
* @author Emil Öhman <emil.ohman@scouterna.se>
3+
* @website https://github.com/Scouterna
4+
*/
5+
6+
7+
/**
8+
* Testfunktion för att testa anrop med olika
9+
* användarnamn/lösenord
10+
*/
11+
function testaDoGet() {
12+
const e = {
13+
parameters : {
14+
username: ["en e-postadress"],
15+
password: ["lösenord"],
16+
version: ["2.0.0"],
17+
forceupdate: ["true"]
18+
}
19+
}
20+
doGet(e);
21+
}
22+
23+
24+
/**
25+
* Körs vid GET-anrop till webbappen
26+
*
27+
* @param {Object} e - Query-parametrar vid GET-anrop till webbappen
28+
*
29+
* @returns {Object} - Ett objekt av typen TextOutput
30+
*/
31+
function doGet(e) {
32+
return ScoutnetSynkLib.synkroniseraKontakter(KONFIG_OBJECT, e);
33+
}
34+
35+
36+
/**
37+
* En testfunktion för att själv kunna få fram oformaterad brödtext för e-brev
38+
* samt html-formaterad brödtext för e-brev.
39+
*
40+
* Skapa ett utkast i din Gmail med ämne satt till Kontaktgrupper och kör sen
41+
* denna funktion så skrivs brödtexten ut i körningsloggen.
42+
*/
43+
function testGetHtmlEmailBody() {
44+
45+
const subject = "Kontaktgrupper";
46+
47+
ScoutnetSynkLib.testGetHtmlEmailBody(KONFIG_OBJECT, subject);
48+
}
49+
50+
51+
/**
52+
* Uppdatera kalkylbladet med de användare som ska ha behörigheter
53+
*/
54+
function updateContactGroupsAuthnSheetUsers() {
55+
ScoutnetSynkLib.updateContactGroupsAuthnSheetUsers(KONFIG_OBJECT);
56+
}
57+
58+
59+
/**
60+
* Skapa kolumnrubriker i kalkylarket för konfiguration av Kontakter
61+
*/
62+
function skapaRubrikerKontakter() {
63+
ScoutnetSynkLib.skapaRubrikerKontakter(KONFIG_OBJECT);
64+
}

0 commit comments

Comments
 (0)