Skip to content

Commit

Permalink
Merge pull request #85 from Scouterna/utv
Browse files Browse the repository at this point in the history
Utv
  • Loading branch information
Emil Öhman authored Dec 30, 2022
2 parents 8762803 + b41f072 commit 2499c67
Show file tree
Hide file tree
Showing 12 changed files with 92 additions and 66 deletions.
1 change: 1 addition & 0 deletions Anvandare.gs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/**
* @author Emil Öhman <[email protected]>
* @website https://github.com/Scouterna
* @version 2022-12-30
*/


Expand Down
15 changes: 8 additions & 7 deletions Bibliotek/Anvandare-lib.gs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ function synkroniseraAnvandare(INPUT_KONFIG_OBJECT, defaultOrgUnitPath, suspende

let allMembers;
if ("group" === KONFIG.ORGANISATION_TYPE) {
allMembers = fetchScoutnetMembers_(true); //Hämta lista över alla medlemmar
allMembers = fetchScoutnetMembers_(true, false); //Hämta lista över alla medlemmar
console.info("Antal medlemmar i kåren " + allMembers.length);
}

Expand Down Expand Up @@ -619,7 +619,7 @@ function suspendAccount_(userAccount, suspendedOrgUnitPath) {
*/
function getGoogleAccounts_(defaultOrgUnitPath) {

let users;
let listOfUsers = [];

for (let n = 0; n < 6; n++) {
if (0 !== n) {
Expand All @@ -635,12 +635,13 @@ function getGoogleAccounts_(defaultOrgUnitPath) {
maxResults: 150,
pageToken: pageToken
});
users = page.users;
const users = page.users;
if (users) {
//for (let i = 0; i < users.length; i++) {
//const user = users[i];
for (let i = 0; i < users.length; i++) {
const user = users[i];
listOfUsers.push(user);
//console.log('%s (%s)', user.name.fullName, user.primaryEmail);
//}
}
} else {
console.warn('Ingen användare hittades i denna underoganisation.');
const empty = [];
Expand All @@ -649,7 +650,7 @@ function getGoogleAccounts_(defaultOrgUnitPath) {
pageToken = page.nextPageToken;
} while (pageToken);

return users;
return listOfUsers;

} catch(e) {
console.error("Problem med att anropa GoogleTjänst Users.list i funktionen getGoogleAccounts");
Expand Down
83 changes: 43 additions & 40 deletions Bibliotek/Gemensamma_funktioner-lib.gs
Original file line number Diff line number Diff line change
Expand Up @@ -644,23 +644,30 @@ function getEmailListSyncOption_(member, synk_option, boolGoogleAccounts) {
* Hämta lista över alla medlemmar
*
* @param {boolean} forceUpdate - Tvinga uppdatering av data eller ej från Scoutnet
* @param {boolean} fetchWaitingMembers - Om "medlemmar" från väntelistan ska hämtas i stället för riktiga medlemmar
*
* @returns {Object[]} allMembers - Lista med medlemsobjekt för alla medlemmar i kåren
*/
function fetchScoutnetMembers_(forceUpdate) {
function fetchScoutnetMembers_(forceUpdate, fetchWaitingMembers) {

const cacheExpirationInSeconds = 21600; //6 timmar
console.time("Hämta kårens alla medlemmar");
console.time("Hämta kårens alla medlemmar fetchWaitingMembers-" + fetchWaitingMembers);

const cache = CacheService.getScriptCache();

let kaka;
let json;
let extraUrlParam = "";

if (fetchWaitingMembers) {
extraUrlParam = "?waiting=1";
}

const nameOfCache = "fetchScoutnetMembers-fetchWaitingMembers-" + fetchWaitingMembers;
//kaka sätts här för att spara ca 70ms då anropet inte behövs vid forceUpdate
if (forceUpdate || !(kaka = cache.get("fetchScoutnetMembers"))) {
if (forceUpdate || !(kaka = cache.get(nameOfCache))) {

const url = 'https://' + KONFIG.SCOUTNET_URL + '/api/' + KONFIG.ORGANISATION_TYPE + '/memberlist';
const url = 'https://' + KONFIG.SCOUTNET_URL + '/api/' + KONFIG.ORGANISATION_TYPE + '/memberlist' + extraUrlParam;
json = urlFetch_(url, KONFIG.API_KEY_LIST_ALL);
//console.log("Json.length " + json.length);

Expand All @@ -669,15 +676,15 @@ function fetchScoutnetMembers_(forceUpdate) {
//100KB ~ 102400 tecken från variabeln json
//Motsvarar ca 78 medlemmar
if (json.length < 100000) {
cache.put("fetchScoutnetMembers", json, cacheExpirationInSeconds);
cache.put(nameOfCache, json, cacheExpirationInSeconds);
//console.log("Skapa kaka med livslängd " + cacheExpirationInSeconds + " sekunder");
}
else {
//console.log("För stor mängd data för att skapa en kaka");
}
}
else {
console.log("Kakan för att hämta alla medlemmar fanns redan");
console.log("Kakan för att hämta alla medlemmar fanns redan fetchWaitingMembers-" + fetchWaitingMembers);
json = kaka;
}

Expand All @@ -704,7 +711,8 @@ function fetchScoutnetMembers_(forceUpdate) {
//console.log(member);
allMembers.push(member);
}
console.timeEnd("Hämta kårens alla medlemmar");
console.log("Antal medlemmar " + allMembers.length + " fetchWaitingMembers-" + fetchWaitingMembers)
console.timeEnd("Hämta kårens alla medlemmar fetchWaitingMembers-" + fetchWaitingMembers);
return allMembers;
}

Expand Down Expand Up @@ -1087,7 +1095,7 @@ function deleteRowsFromSpreadsheet_(sheet, delete_rows) {
function removeDublicates_(list) {
const listWithoutDuplicates = []

for (let i = 0; i < list.length; i++){
for (let i = 0; i < list.length; i++) {
if (!listWithoutDuplicates.includes(list[i])){
listWithoutDuplicates.push(list[i])
}
Expand All @@ -1108,40 +1116,35 @@ function removeDublicates_(list) {
*/
function intPhoneNumber_(phnum) {

let regex = /^\+/;
//console.log('Telefonnummer före: %s', phnum);
const res = phnum.match(regex);
if (res) {
let countryCodeIsFound = false;

const countryCodes = [];
countryCodes.push("43"); //
countryCodes.push("44"); //
countryCodes.push("45"); //Danmark
countryCodes.push("46"); //Sverige
for (let k in countryCodes) {
regex = new RegExp('^\\+' + countryCodes[k], 'g');
if (phnum.match(regex)) {
phnum = "+" + countryCodes[k] + phnum.substr(3).replace(/[^0-9]/g, '');
countryCodeIsFound = true;
}
}
if (!countryCodeIsFound) {
phnum = null;
}
//console.log('Efter landskod %s', phnum);
if ("" === phnum) {
return "";
}
else {
//console.log('Telefonnummer börjar ej med landskod');
if (phnum.replace(/[^0-9]/g, '').match(/^0/)) {
phnum = "+46" + phnum.replace(/[^0-9]/g, '').substr(1);
}
else {
//phnum = null

const numPatternOnlyDigits = /[^0-9]+/g;
phnum = phnum.replace(numPatternOnlyDigits, '');
//Ta bort alla ickesiffror, mellanslag

const numPatternNoLeadingZeros = /[0]*/;
phnum = phnum.replace(numPatternNoLeadingZeros, '');
//Ta bort inledande nollor

const countryCodes = [];
countryCodes.push("44"); //Storbritannien
countryCodes.push("45"); //Danmark
countryCodes.push("46"); //Sverige
countryCodes.push("47"); //Norge
countryCodes.push("358"); //Finland

for (let i = 0; i < countryCodes.length; i++) {

if (phnum.startsWith(countryCodes[i])) {
//console.log("Telefonnumret tillhör land " + countryCodes[i]);
return "+" + phnum;
}
}
//console.log('Klarformaterat telefonnummer %s', phnum);
return phnum

//Lägg till landskod om ingen finns innan
return "+46" + phnum;
}


Expand All @@ -1153,7 +1156,7 @@ function intPhoneNumber_(phnum) {
* @returns {boolean} - Sant eller falskt om korrekt format
*/
function validatePhonenumberForE164_(phnum) {
const regex = /^\+[1-9]\d{1,14}$/;
const regex = /^\+[1-9]\d{5,14}$/;
return regex.test(phnum);
}

Expand Down
34 changes: 20 additions & 14 deletions Bibliotek/Kontakter-Admin-lib.gs
Original file line number Diff line number Diff line change
Expand Up @@ -140,9 +140,11 @@ function updateContactGroupsAuthnSheetUsers(INPUT_KONFIG_OBJECT) {
sheet.insertRows(slut, delete_rows.length);
}

//Radera det som står i kolumnen för antal tvingade uppdateringar
const range_tvingade_uppdateringar = sheet.getRange(start, grd["tvingade_uppdateringar"]+1, slut-start+1);
range_tvingade_uppdateringar.clear();
if (0 !== slut-start+1) { //Om det redan står några personer i listan
//Radera det som står i kolumnen för antal tvingade uppdateringar
const range_tvingade_uppdateringar = sheet.getRange(start, grd["tvingade_uppdateringar"]+1, slut-start+1);
range_tvingade_uppdateringar.clear();
}

console.info("Lägga till eventuella nedanstående e-postadresser så att de får behörighet");
for (let i = 0; i < listOfEmailsShouldHaveAccess.length; i++) {
Expand All @@ -155,18 +157,20 @@ function updateContactGroupsAuthnSheetUsers(INPUT_KONFIG_OBJECT) {
}
}

const range_kontakter_anvandare = sheet.getRange(start, grd["e-post"]+1, slut-start+1, 5);

//Vi tar bort alla skyddade områden
const protections = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (let i = 0; i < protections.length; i++) {
const protection = protections[i];
if (protection.canEdit()) {
protection.remove();
if (0 !== slut-start+1) { //Om det redan står några personer i listan
const range_kontakter_anvandare = sheet.getRange(start, grd["e-post"]+1, slut-start+1, 5);

//Vi tar bort alla skyddade områden
const protections = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (let i = 0; i < protections.length; i++) {
const protection = protections[i];
if (protection.canEdit()) {
protection.remove();
}
}
//Vi skyddar kalkylarket för Kontakter-Användare så man inte råkar ändra av misstag
range_kontakter_anvandare.protect().setWarningOnly(true);
}
//Vi skyddar kalkylarket för Kontakter-Användare så man inte råkar ändra av misstag
range_kontakter_anvandare.protect().setWarningOnly(true);
}


Expand Down Expand Up @@ -506,7 +510,9 @@ function getContactGroupsData_(listOfGroupEmails, forceUpdate) {
let contactGroupsList = [];

//Hämta lista med alla medlemmar i kåren och alla deras attribut
let allMembers = fetchScoutnetMembers_(forceUpdate);
const allActiveMembers = fetchScoutnetMembers_(true, false);
const allWaitingMembers = fetchScoutnetMembers_(true, true);
let allMembers = [...allActiveMembers, ...allWaitingMembers];
let filteredMembers = filterMemberAttributes_(allMembers);

//Listor med telefonnummer, e-postadress och medlemsnummer för alla vuxna medlemmar för att
Expand Down
18 changes: 13 additions & 5 deletions Bibliotek/Medlemslistor-lib.gs
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,10 @@ function synkroniseraMedlemslistor(INPUT_KONFIG_OBJECT, start, slut, shouldUpdat
const sheetDataMedlemslistor = getDataFromActiveSheet_("Medlemslistor");
const grd = getMedlemslistorKonfigRubrikData_();
//Hämta lista med alla medlemmar i kåren och alla deras attribut
const allMembers = fetchScoutnetMembers_(true);
console.info("Antal medlemmar i kåren " + allMembers.length);
const allActiveMembers = fetchScoutnetMembers_(true, false);
const allWaitingMembers = fetchScoutnetMembers_(true, true);
const allMembers = [...allActiveMembers, ...allWaitingMembers];
console.info("Antal medlemmar i kåren samt väntelistan " + allMembers.length);

const sheet = sheetDataMedlemslistor["sheet"];
const selection = sheetDataMedlemslistor["selection"];
Expand Down Expand Up @@ -603,13 +605,19 @@ function getAndMakeAttachments_(attachmentsInput, documentToMerge, attribut, dat
const copy_file = DocumentApp.openById(copy_id);

const body = copy_file.getBody();
replaceContentOfDocument_(body, attribut, dataArray);
if (body) {
replaceContentOfDocument_(body, attribut, dataArray);
}

const header = copy_file.getHeader();
replaceContentOfDocument_(header, attribut, dataArray);
if (header) {
replaceContentOfDocument_(header, attribut, dataArray);
}

const footer = copy_file.getFooter();
replaceContentOfDocument_(footer, attribut, dataArray);
if (footer) {
replaceContentOfDocument_(footer, attribut, dataArray);
}

console.log("URL för temporärt skapad fil är");
console.log(copy_file.getUrl());
Expand Down
1 change: 1 addition & 0 deletions Gemensamma_funktioner.gs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/**
* @author Emil Öhman <[email protected]>
* @website https://github.com/Scouterna
* @version 2022-12-30
*/


Expand Down
1 change: 1 addition & 0 deletions Grupper.gs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/**
* @author Emil Öhman <[email protected]>
* @website https://github.com/Scouterna
* @version 2022-12-30
*/


Expand Down
1 change: 1 addition & 0 deletions Konfiguration.gs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/**
* @author Emil Öhman <[email protected]>
* @website https://github.com/Scouterna
* @version 2022-12-30
*/


Expand Down
1 change: 1 addition & 0 deletions Kontakter-Admin.gs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/**
* @author Emil Öhman <[email protected]>
* @website https://github.com/Scouterna
* @version 2022-12-30
*/


Expand Down
1 change: 1 addition & 0 deletions Kontakter-Anvandare.gs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/**
* @author Emil Öhman <[email protected]>
* @website https://github.com/Scouterna
* @version 2022-12-30
*/


Expand Down
1 change: 1 addition & 0 deletions Medlemslistor.gs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/**
* @author Emil Öhman <[email protected]>
* @website https://github.com/Scouterna
* @version 2022-12-30
*/


Expand Down
1 change: 1 addition & 0 deletions Start_funktioner.gs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/**
* @author Emil Öhman <[email protected]>
* @website https://github.com/Scouterna
* @version 2022-12-30
*/


Expand Down

0 comments on commit 2499c67

Please sign in to comment.