Google Scripts Google Sheets

Actualitzar massivament fotografies de GSuite amb un script de Google

Hola a tothom!

Al nostre centre ens hem trobat amb la necessitat d’actualitzar totes les fotografies dels usuaris del GSuite de forma massiva. Per no haver d’anar un per un, he adaptat aquest script perquè a partir d’un full de càlcul de Google que conté una llista de correus s’actualitzin automàticament les fotografies del GSuite dels alumnes. Les fotografies s’han d’haver penjat prèviament a una carpeta de Drive i han de tenir com a nom de la imatge el mateix correu electrònic que figura a la llista del full de càlcul. Anem a veure l’exemple.

1. El primer que hem de fer és crear el nostre full de càlcul amb les adreces de correu a les que vulguem actualitzar les fotografies.

2. El segon és pujar les imatges a una carpeta del Drive i posar el correu de l’alumne a la fotografia que pertoqui.

3. Quan tenim fet tot l’anterior és hora de crear l’Script de Google. Per fer-ho anam al nostre Drive – Nou – Més – Scripts de Google Apps

4. Després podem aferrar el següent codi (està comentat amb l’explicació d’allò que fa):

function myFunction(){
//Recuperam el full de càlcul de Google de referència que conté les adreces de correu
const fullCalcul = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/14vdttrN_E_yq1miD3/edit#gid=0");
//Construim array de dades. Alerta que s'ha de posar el nom del full correctament. En aquest cas és Correus
const dades = fullCalcul.getSheetByName("Correus").getDataRange().getValues();
//imprimim llargària array si interessa
//Logger.log(dades.length);
//Per cada fila de dades
  dades.forEach(function(value, index) {
    //Donam a la variable userEmail el correu de l'alumne
    var userEmail = value[0].toString();
    //Logger.log(userEmail);
    //Cridam la funció que fa el canvi d'imatge cercant-lo al Drive de l'usuari que ha creat aquest Script
    updateGmailPhotoFromDrive(userEmail);
  });
};


//Funció que canvia les fotografies que estan penajades al Drive
function updateGmailPhotoFromDrive(userEmail) {
  try {
    var fileName = userEmail + '.jpg';

    Logger.log(fileName);
    var blob = DriveApp.getFilesByName(fileName).next().getBlob();
    var data = Utilities.base64EncodeWebSafe(blob.getBytes());

    AdminDirectory.Users.Photos.update({ photoData: data }, userEmail);
  } catch (err) {
    Logger.log(err.toString());
  }
}

5. Abans d’executar el codi heu de tenir present que el compte que gestionarà aquest script ha de tenir permís per administrar els usuaris des de la consola del GSuite.

6. Hem d’afegir el servei AdminDirectory fent el següent:

Feim clic per afegir un servei
Afegim el servei
Triam l’opció Admin SDK API
Ens apareixerà afegit a la barra lateral del projecte

6. Un cop afegit ja podem executar el codi i es canviaran de forma recursiva les imatges dels usuaris del GSuite tenint en compte el seu usuari del domini.

Esper que aquest script us servesqui d’ajuda per canviar fotografies de forma massiva.

Salutacions!

To top