Code Monkey home page Code Monkey logo

google-scoutnet-synk's People

Contributors

flindeberg avatar fossing avatar fredrikbaberg avatar hakankvist avatar kalleelmer avatar larsskogshusabf avatar larsskogshusgmail avatar los7702 avatar mrmanner avatar oskarbirkne avatar stalar avatar theswedishscout avatar webbmastern avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

google-scoutnet-synk's Issues

E-postadresser och grupper

Nu går det att styra på varje enskild e-postlista i Scoutnet vilka e-postadresser som den sänder till.
Detta påverkar även API:t går det att styra om så att detta även följer med till G suitegrupperna?

Exempel på användning: du har en avdelning med yngre ledare (utmanare) som även har kontaktuppgifter till sina anhöriga i Scoutnet.
Du vill genom att kombinera två e-postlistor från Scoutnet skapa en lista för en avdelning där scouternas alla kontaktuppgifter följer med men i ledarnas fall så blir det bara den primära e-postadressen.

Lösenordsåterställning ej populerat.

vi har idag ca 50 vuxna i vår kår.
Nu när Corona dök upp så påskyndades vår implementering av Google plattformen.
Synkningen går bra som det är men jag saknade återställningsinformation på konton när jag började synca konton.

Som scriptet ser ut så uppdateras Googleanvändaren utifrån information från objektet som gommer från maillistan som är angiven userAccountConfig, det innebär att det finns en begränsad mängd data att anväda som källa till uppdateringen. tillexempel så saknas mobilnummer.

Jag har för att kunna uppdatera den informationen på Googlekontot gjort lite ändringar i Användare.gs som innebär att när listorna gås igenom så letar jag upp medlemen i arrayen allmembers och skickar den till funktionerna som skall göra jobbet.

samt att jag använder lite linq/lambda syntax istället för en mängd "for" satser, jag tror att det är lite lättare att följa koden då

Vill ni att jag öppnar en pullrequest för att implementera detta i projektet? och eller delar av det.

Jag har aldrig vare sig programmerat mot Googles plattform eller bidragit med kod i Github tidigare.

Jag har alltid varit en ensamvarg i mina projekt

MVH
Lasse Skogshus

Ändra "reply-to" inställningen för en maillista

Svarar man på ett mail som kommer till en lista, så svarar man alltid till listan.
Det går inte att ändra fältet för to-mailadressen i gmail (det fältet verkar helt låst).

Det hade varit najs om man kunde ändra den inställningen i kalkylarket, ändrar jag inställningen manuellt i grupper så verkar den skrivas över vid nästa synk.

Google användare tas bort och läggs till vid varenda syncning

Vi har några användare som tas bort/läggs till vid varenda syncning. Samtliga användare med detta problem har en gmail-address.
För gmail-adresser, så ignoreras punkten, dvs namn.efternamn är samma som namnefternamn och n.a.m.n.e.f.t.e.r.n.a.m.n, allting hamnar i samma inbox.

I loggen Audit-loggen i administratörsappen så ser det ut så här (äldsta even överst, nyast längst ner)
fornamn.efternamn tas bort från lista
fornamnefternam läggs till lista

Detta upprepas varje dag.
De adresser där vi sett detta problemet är anhörigadresser. Maillistorna synkas med tom synkinställning och begränsa åtkomst satt till: ALL_IN_DOMAIN_CAN_POST.

Tittar man i grupperna, så adresserna verkligen tillagda med "fornamnefternamn" i grupperna.

För många anrop gjorda mot googles api, google svarar med capatcha

Hej, jag tänkte köra en uppdatering manuellt idag, behövde debugga inställningarna i mitt excelark.

Nu avslutas synkningen av grupper med fel av typen:

HttpResponseException: Response Code: 429. Message: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content="initial-scale=1"><title>https://admin.googleapis.com/admin/directory/v1/groups?alt=json&amp;domain=blablabla.se&amp;maxResults=150&amp;quotaUser=XXXXXXXXXXXXXXXXXXXX</title></head>
<body style="font-family: arial, sans-serif; background-color: #fff; color: #000; padding:20px; font-size:18px;" onload="e=document.getElementById('captcha');if(e){e.focus();}">
<div style="max-width:400px;">
<hr noshade size="1" style="color:#ccc; background-color:#ccc;"><br>
<form id="captcha-form" action="index" method="post">
To continue, please type the characters below:<br><br>
<img src="/sorry/image?id=bla bla blaj&amp;hl=en&amp;continue=https://admin.googleapis.com/admin/directory/v1/groups%3Falt%3Djson%26domain%3blablabla.se%26maxResults%3D150%26quota....
checkIfGroupExists	@ Grupper.gs:1416
checkIfEmailIsAGroup	@ Grupper.gs:1401
getEmailadressesToSendSpamNotification	@ Grupper.gs:1163
updateGroup	@ Grupper.gs:492
Grupper	@ Grupper.gs:214

Möjlighet till inaktiva konton som standard?

Vet inte om det här är tekniskt möjligt, men frågar.

Det är inte alla i scoutkåren som har tillgång till Google Workspace som använder det, men kontona skapas ändå. Ibland medför det förvirring då adressen dyker upp i listor även om det inte finns någon som läser den.

Är det möjligt att som standard ha kontot inaktivt, på något sätt, tills dess att personen loggat in (via ScoutID)?

Etiketter för val av synkronisering av Grupper

I enlighet med rekommendationen, kör jag raderna i grupper som olika triggers för att det inte ska ta för lång tid.

Det skulle vara trevligt om man kunde välja rader baserat på tex en tag (ny kolumn) så att man slapp uppdatera på två eller fler ställen när man lägger in en rad i kalkylarket.

Jag har valt att köra rader som motsvarar olika grupperingar, och att sätta en tag på de raderna och att kunna välja ut rader för körning baserat på den hade varit guld.

T.ex.
I kalkylarket har jag ett antal rader som rör kårens avdelningar. Jag har valt att köra alla avdelningar i en batch och kallar den funktionen Grupper_Avdelningar

function Grupper_Avdelningar() {
  Grupper(17, 29);
}

Problemet är nu att urvalet baserar sig på radnummer och om jag tar bort, infogar, eller lägger till rader i kalkylarket, måste jag uppdatera skriptet. Skulle vara sjukt bra om man istället kunde köra grupper typ så här:

function Grupper_Avdelningar() {
  var rader = HamtaGruppRaderForTag("Avdelningar")
  Grupper(rader);
}

Felmeddelande vid grupp synkronisering

När jag försöker köra Grupper() funktionen får jag felmeddelandet nedan. Tidigare har jag kört scriptet tidsstyrt och det har fungerat. Vad jag vet så har felet uppstått utan att jag har ändrat något. Jag får samma problem om jag kör scriptet manuellt, som om jag kör det tidsstyrt.

TypeError: Cannot read property 'delivery_settings' of undefined
    at getMembertype(Grupper:637:53)
    at updateGroup(Grupper:497:27)
    at Grupper(Grupper:187:7)

Skapa ett bibliotek av skripten

Migrerade just till version 2.0, från 1.7 via 1.8.

Pallade ärligt talat inte flytta alla scriptfiler in i kalkylarket, men det behövde jag inte då jag kunde dra in alla scriptfilerna som ett bibliotek och enkelt skapa en lokal skriptfil som bara innehåller det jag vill köra.

Så nu har jag alla Scoutnet Sync skripten i ett projekt och exponerar det som ett bibliotek, drar in detta i kalkylarket där jag skapat en enda fil 'Mina_funktioner.gs' där jag exponerar de funktioner jag vill köra på timer.
image

Min tanke var nu att det skulle vara sjukt nice om man istället för att kopiera scripten kunde dra in dem som ett bibliotek, då behöver alla inställningar flyttas ut ur biblioteket (Konfiguration.gs) kanske som ett settingsobjekt som sedan kunde skickas med vid körningar, på så sätt kunde jag som konsument enkelt välja vilken version av scripten jag ville köra med minimal insatts. Allt jag behöver är ett Script Id för att dra in scriptet.
Kanske funkar detta inte mellan google domäner, kanske är det förknippat med sjuka säkerhetsproblem, men jag villa bara så ett frö som skulle kunna underlätta för alla.

Medlemslistor - dokument bifogas ej.

Jag har en fungerande testmedlemslista men har problem att få bifogat dokument att fungera, möts av följande felmeddelande när jag anropar synkroniseraMedlemslistorVissaRaderUppdateraOchSkicka1: [TypeError: Cannot read properties of null (reading 'getText')]. Mejlet går iväg, men det finns ingen bifogad PDF.

Jag har skapat ett Google Dokument med lite text i för att testa, typ Hej {{Förnamn}} {{Efternamn}}, och kopierat dokumentets ID till kolumn F ("Koppla dokument").

Antagligen uppstår felet på

const section_text = section.getText();
. Observera att jag kör versionen vi diskuterade i samband med #81.

Google grupps

is:issue is:open vi har Google grupper som vi vill bara organisationen ska kunna skicka till så jag gjorde dom inställningarna i mitt kalkylark. Med @ i "Kan skicka" men detta gorde också att andra grupper inte kan skicka till den utan bara använder. Har jag gjort fel eller är detta något som går att lösa?

Alternativ e-post

Vore kanon om man kunde styra listorna mot alternativ e-post enbart ungefrä som -f fungerar idag.

Öppna upp för att synka ALLA medlemmar

I dessa tider kan det vara fördelaktigt att bjuda in ALLA medlemmar (inte bara ledare/funktionärer). Kanske kan scouter och (ledare/funktionärer) skiljas åt i två olika organisationer, så det går att slå av/på appar beroende på detta (ex: scouter har bara google chat/meet). Måste också hantera flytt mellan dessa organisationsenheter då någon går från scout->ledare, exempelvis.

Grupper: Synkinställningar för respektive importerad lista från scoutnet.

Det vore praktiskt att kunna ställa synk-inställningar per importerad lista.

Ett tydligt exempel är vår medlemslista där vi för ledare och scouter över 18 år bara vill skicka till primär epostadress medans för scouter under 18 vill skicka till primär + anhörig.

Det går göra med att skapa två listor och slå ihop dem i google till en tredje men det känns lite onödigt.

Man skulle kunna tänka sig att ha synk-inställningarna inom []:ar för att enkelt kunna urskilja dem.

Exempel: 1234 [-m], 4321 [-amf]

Mobilnummer

Ett förslag: kan vi synka in G Suiteanvändarnas mobilnummer till deras profiler?
Det skulle göra t ex katalogen mycket användbar.

Att använda de val du gjort för mail i scoutnet

Våra föräldrar har gjort val för hur de ska skickas mail till dem i scoutnet.
Man kan ju där välja om primär eller vilka anhörig-adresser som ska användas.
Det vill vi ju gärna använda och jag trodde att "-e" skulle göra detta. Men jag får inga adresser översyncade då.

Har jag missuppfattat vad e ska ge?
ska man skriva "-me" kanske?

Länk till gruppen fungerar ej

När synk körs så skapas en länk i kalkylarket, åtminstone första gången det körs för en grupp. Tas den länken bort ersätts den inte.

Skapar jag en ny grupp stämmer inte länken som skapas, den hamnar i gruppens "inkorg" istället för sida med lista över medlemmar.

Schemaläggning vid användning av bibliotek?

Hej,
Jag uppdaterade nyligen till 3.0.0 och passade då på att ändra så biblioteket används. I samband med det tog jag bort alla filer utom Konfiguration.gs från Apps Script eftersom det, som jag förstod det, var den enda filen som ska behövas. Det jag inte uppfattat är schemaläggning. Eftersom det nu är ett bibliotek kommer jag inte åt funktioner för att uppdatera användare och grupper.

Hur ser jag till att skript(en) körs regelbundet, och går det att se logg för körningar?

Felaktig uppdatering av namn

Om en person byter namn i Scoutnet så blir uppdateringen felaktig.

rad 436 i Anvandare.gs ska vara:
user.name.familyName = member.last_name;
inte
user.name.givetName = ...

API-anrop till groupsSettings.groups.patch misslyckades med felet, fel typ på booleans

Jag har fått följande fel de senaste två dagarna (kör inte den senaste versionen).

GoogleJsonResponseException: API-anrop till groupsSettings.groups.patch misslyckades med felet:
Invalid value at 'group_settings.include_custom_footer' (TYPE_STRING), true
Invalid value at 'group_settings.allow_external_members' (TYPE_STRING), true
Invalid value at 'group_settings.include_in_global_address_list' (TYPE_STRING), true
at changeGroupPermissions(Grupper:915:30)
at updateGroup(Grupper:601:3)
at Grupper(Grupper:187:7)

Jag tolkar det som att dessa tre parametrar förväntas vara av typen STRING.
Dessa värden sätts som booleans (true, false) och inte ("true", "false") i koden.

Jag har försökt söka i googles dokumentation men blir inte klok på om parametrarna ska anges som booleans eller strängar.

Jag testat att ändra till strängar, och då får jag inte detta felet längre.

Uppdatera dokumentationen

Efter att scripten flyttats in i kalkylarket behöver instruktionerna uppdateras eftersom de nämner inställningar etc som inte längre är aktuella, som tex den markerade raden här.
image

Inställningen "reply-to" skrivs över vid synkning

Vi har problem med att inställningen vi har valt på respektive grupp under "Gruppinställningar>E-postalternativ>Lägg upp svar till" skrivs över vid synkning.

Jag har lyckats hitta raden som är orsaken till detta, 1033 i Grupper.gs - kan jag bara kommentera bort denna eller kommer jag få andra problem då?

Det ultimata hade varit om standardinställningen på nya listor är "endast meddelandets författare", men att inställningen får vara kvar om den skrivs över via Google Grupper.

ReferenceError: "AdminDirectory" har inte definierats

Får detta error när jag försöker implementera skriptet. Vad kan man göra åt det?

Starta Funktion Felmeddelande Utlösare Sluta
2018-04-25 18:18 AccountsAndGroups ReferenceError: "AdminDirectory" har inte definierats. (rad: 263, fil: Användare) time-based 2018-04-25 18:18

Sätta recoveryPhone fungerar inte

I korthet: för att sätta recoverPhone kräver Google att numret är på formatet E.164. intphonenumber() försöker nog skapa sådana telefonnummer men lyckas inte alltid varpå uppdateringen av användaren inte lyckas.

Ett exempel på ett telefonnummer som inte är rätt "46 70 7560000" (jag har skrivit nollor på slutet istf det riktiga numret).

Antingen bör recoveryPhone inte sättas (om man inte kan garantera rätt format) eller så kan man prova att sätta recoveryPhone i ett eget anrop så att inga andra uppdateringar av användaren försvinner pga detta problem.

epostalias.

Egentligen inte ett syckproblem än, men det vore bra om coutnet kunde leverera smeknamn så man kan lägga till det som alias i google/o365

Endast personer med gsuite ska kunna skicka till lista, ska ej läggas till listan

Hej!

Jag har ett antal listor som som går till alla föräldrar på en avdelning, och en lista som går till alla adresser i kåren.

På något sätt vill jag få till att begränsa så att endast de som har ett gsuite-konto ska kunna skicka till listan (jag la till @ i kan skicka/sync). Det fick då till följd att personer med ett gsuite-konto som INTE är med på listan från scoutnet blev tillagda i gruppen (med rollen manager).

Innebär det att dessa personer kommer få mailen som skickas till listan också (det vill jag inte :)

Saknar grundläggande information om hur systemet fungerar och hur man får tag i listid, rule_id etc

Det här verkar vara ett användbart system och jag försöker sätta upp det. Tack för ett stort jobb!

Men, det har varit svårt för mig att förstå principerna och hur man får tag på listid, rule_id etc från Scoutnet, så jag skulle vilja ha mer dokumentation, om grundläggande kopplingar, var man får listid, rule_id etc ifrån och hur man gör när man
redan har manuellt kontrollerade listor och grupper tidigare.

Jag tror att ett bra sätt att få till detta vore att skriva några ämnen i Wiki'n här för det här projektet.

Här är några frågor/områden som jag skulle vilja ha mer info om:

  1. Gruniden: Man gör fullt fungerande maillistor i Scoutnet men de används bara som mallar. Det är lite udda och kan kanske förklaras tydligare varför man valt göra på detta sätt och vad det betyder. Men sen också
    • Vilka av inställingarna i listan spelar någon roll? namn, beskrivning, fördefinierad/privat, öppen för inkommande epost E-postmottagare? Spelar det någon roll om e-postlistan är aktiv?
  2. Varje lista har ett id. Jag kan inte se någon beskrivning hur man får tag i dessa. Emil tipsade om "Webbkoppling > API-nycklar och endpoints" så jag hittade till slut, men innan dess laddade jag ner json-blobar och kollade.
  3. Det skapas användare automatiskt, men de har ingen sekundär emailadress såvitt jag kan se och får inget mail om att de har ett nytt konto. Alltså måste man väl göra en manuell process och kontakta dessa personer och tala om för dem att de har ett konto och ge dem ett lösenord? Kanske självklart, men vore ändå bra att peka ut.
  4. Använda tidigare registrerade användare. Jag har fått lite information per mail från Emil, men vore bra att ha en Wiki-artikel om att man ska gå in och sätta Scoutnet medlemsnummer till anställningsnummer och flytta användarna till Scoutnet organisationen, för att undvika att få en dubblett.
  5. Sen saknar jag också information om hur man går över från en befintligt maillista till en genererad utan att behöva radera den gamla. Skall gå enligt Emil, men kanske vore bra att dokumentera möjligheten åtminstone, om det är svårt att förklara i närmare detalj.

Jag har till slut tagit mig rätt långt, så det går ju uppenbarligen, men lite mer information hade sparat mig en hel del tid. När jag väl lärt mig lite mer själv kan jag kanske bidra med en Wiki-artikel om det finns intresse.

Problem med grupper

Tycker jag har följt readmen korrekt, men får inte synkningen av grupper att fungera.

Användarna går bra man när jag kör grupperna får jag
"API call to directory.users.list failed with error: Not Authorized to access this resource/api (line 620, file "Grupper")"

Något tips på vad jag gjort fel?

Röd bakgrund för kolumn e-post skräppostmoderator?

När jag kollar på kalkylarket för grupper ser jag att kolumnen "E-post skräppostmoderator" (kolumn M) får röd bakgrund vid synk. Stämmer det verkligen, eller borde det hamna i nästa kolumn (N = "Felmeddelande")?

Jag uppdaterade till 1.7.0 igår, tror det var så innan men är inte säker. Jag återställde alla bakgrundsfärger och körde om AnvandareOchGrupper, ifall det var något som låg kvar sedan tidigare, men samma kolumn får röd bakgrund igen.

Färgen sätts alltså för rader 3 fram till och med sista raden som innehåller en grupp.

Utökad Logger-funktionalitet

Jag var inne och kollade lite i kodbasen och kände en väldig avsaknad av olika log-nivåer. Exempelvis finns det två i dagsläget;

  1. Det här hände, fortsätt (Logger.log)
  2. Ajdå, crash (dvs scriptet får ett exception som inte hanteras, så crash används i praktiken som Logger.error då ett mail skickas iväg)

Jag känner speciellt att en mellannivå (eller flera) saknas, exempelvis en Logger.warn som ser till att det går iväg ett mail om skriptet körs via trigger så att man kan gå in och kolla men utan att skriptet för den sakens skull behöver krascha.

Förtydligande av e-postlistor och behörigheter

Skulle vilja ha lite fler exempel på hur grupper konfigureras i kalkylark.

Följande två fall är jag intresserad av, kanske är fler som söker svar på det:

  • Mejllista till alla medlemmar, men begränsa så att endast vissa (t.ex. kårstyrelsen) får göra utskick på den listan. Det finns maillistor i Scoutnet med ID jag kan använda, men hur fyller jag i kalkylarket? Olika Scoutnet-id för Kan skicka och ta emot, Kan skicka och Kan ta emot?
  • Kombinera olika Scoutnet-id för grupper, är det möjligt? Vi har scouter som går på fler avdelningar (men endast kan vara registrerade på en avdelning åt gången i Scoutnet), så jag försöker hitta en lösning på det med flera specialiserade mailinglistor i Scoutnet som då skulle kombineras på något sätt.

API-anrop till directory.users.list misslyckades med felet: Invalid Input: INVALID_OU_ID (line 426, file "Användare")

Skrev mail till Emil den 2019-09-27 med följande innehåll (klippt ut det jag anser är viktigt i frågan)... Vid behov går det att få se delar av min kod för felsökning - dock kommer API-nycklar att ändras efter hand i så fall...

Felmeddelandet jag får är:

API-anrop till directory.users.list misslyckades med felet: Invalid Input:
INVALID_OU_ID (line 426, file "Användare")

Öka användarvänlighet för synk av kontakter?

Jag har testat lite med att synka kontakter men är lite osäker på användarvänligheten. Har jag förstått det rätt är nuvarande lösning att inom kåren dela ett kalkylark där användaren skriver in sin e-postadress och lösenord (eller lämnar lösenord blankt för att få det skickat till sig), trycker på en knapp, så ska synkronisering aktiveras.

Det jag funderar på är:

  • När användaren skriver in sina uppgifter kommer det loggas i historiken för dokumentet, vilket kan vara olämpligt.
  • Fler användare kan inte fylla i det samtidigt.
  • Är det lämpligt/nödvändigt att alla får tillgång till länk till webbapp/webbadress och möjlighet att redigera avancerade fält?

Kalkylarket ska visserligen bara delas inom kåren, och lösenordet ger en begränsad åtkomst, men det är kanske ändå bra att hålla nere risken att något går fel.

Ett alternativ skulle vara att ersätta kalkylarket som delas med ett formulär. Parametrarna kan antingen sättas i ett skript, eller så används funktionen med förifyllda data. Det är något jag börjat kolla på, men kommer behöva skriva om delar av Kontakter-Anvandare.gs för att det ska fungera.
Jag ser egentligen två nackdelar:

  • Formulär är inte avsedda för att skicka in lösenord.
  • Menyn "Scoutnet" i kalkylarket går inte att lägga till (är det något användaren ska komma åt?).

Annars kanske det går att använda Google Sites? Vet inte om det är lika enkelt att dela mellan kårer.

Synk misslyckas med "Resource Not Found: groupKey"

Har sedan några dagar sedan fått felmeddelande när skriptet körs. Idag försökte jag uppdatera från version 1.7.0 till 1.8.0, men får följande fel när jag försöker synka grupper:

GoogleJsonResponseException: API-anrop till directory.members.list misslyckades med felet: Resource Not Found: groupKey
    at getGroupMembers(Grupper:381:35)
    at updateGroup(Grupper:543:23)
    at Grupper(Grupper:219:7)

Förslag på var jag ska börja felsöka?

Tips om kontakter

Ett tips på att göra så att kåren får in alla medlemmar från scoutnet som kontakter i G-suite i en katalog så man kan skicka till enskilda scouter vid tillfälle. Just detta har min kår ett behov av.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.