Persönliche Dankeschön-Zertifikate an Mitarbeiter senden

Programmierniveau: Anfänger
Dauer: 15 Minuten
Projekttyp: Automatisierung mit einem benutzerdefinierten Menü

Zielsetzungen

  • Machen Sie sich mit der Lösung vertraut.
  • Informieren Sie sich über die Funktionsweise der Apps Script-Dienste im Lösung.
  • die Umgebung einrichten
  • Richten Sie das Skript ein.
  • Führen Sie das Skript aus.

Informationen zu dieser Lösung

Vorlage für Mitarbeiterzertifikate in Google Präsentationen automatisch anpassen mit Mitarbeiterdaten in Google Tabellen ein, und versenden die Zertifikate Gmail:

Mitarbeiterzertifikate erstellen

Funktionsweise

Das Skript verwendet die Vorlage für das Mitarbeiterzertifikat von Google Präsentationen und eine Google-Tabelle mit dem Mitarbeiter Details. Das Skript kopiert die Vorlage und ersetzt die Platzhalter durch Daten aus der Tabelle. Sobald das Skript erstellt eine Folie für jeden Mitarbeiter und extrahiert jede einzelne Folie als PDF-Datei. und sendet die Zertifikate an die Mitarbeitenden.

Apps Script-Dienste

Diese Lösung verwendet die folgenden Dienste:

  • Drive-Dienst: Kopiert die Datei Google Präsentationen-Mitarbeiter Zertifikatsvorlage.
  • Tabellenkalkulationsdienst: bietet die Mitarbeiterdetails und aktualisiert den Status für jeden aufgeführten Mitarbeiter.
  • Google Präsentationen-Dienst: Ersetzt die Platzhalter in mit den Daten der Mitarbeitenden aus der Tabellenkalkulation.
  • Gmail-Dienst: Hiermit erhalten Sie die einzelne Folien als und sendet sie an die Mitarbeiter.

Vorbereitung

Damit Sie dieses Beispiel verwenden können, müssen folgende Voraussetzungen erfüllt sein:

  • Ein Google-Konto (Google Workspace-Konten können Genehmigung des Administrators erforderlich.
  • Ein Webbrowser mit Zugriff auf das Internet.

Umgebung einrichten

  1. Klicken Sie auf die folgende Schaltfläche, um eine Kopie der Mitarbeiterzertifikate zu erstellen Vorlage für Google Präsentationen.
    Kopie erstellen

  2. Notieren Sie sich Ihre Präsentations-ID. Sie benötigen sie in einem späteren Schritt. Sie können die ID in der URL finden:

    https://docs.google.com/presentation/d/PRESENTATION_ID/edit

  3. Erstellen Sie in Google Drive einen neuen Ordner für die Zertifikate.

  4. Notieren Sie sich Ihre Ordner-ID. Sie benötigen sie in einem späteren Schritt. Sie finden die ID in der URL: https://drive.google.com/drive/folders/FOLDER_ID

Skript einrichten

  1. Klicken Sie auf die Schaltfläche unten, um eine Kopie des Musters für Mitarbeiterzertifikate zu erstellen Tabelle. Das Apps Script-Projekt dafür Lösung an die Tabellenkalkulation angehängt.
    Kopie erstellen

  2. Öffnen Sie in der Tabelle das Apps Script-Projekt, indem Sie auf Erweiterungen > Apps Script:

  3. Ersetzen Sie für die Variable slideTemplateId PRESENTATION_ID durch die ID Ihrer Präsentation.

  4. Ersetzen Sie für die Variable tempFolderId FOLDER_ID durch die ID Ihres Ordners.

  5. Klicken Sie auf „Speichern“ Symbol „Speichern“.

Skript ausführen

  1. Kehren Sie zur Tabelle zurück und klicken Sie auf Anerkennung. > Zertifikate erstellen. Möglicherweise benötigen Sie um die Seite zu aktualisieren, damit dieses benutzerdefinierte Menü angezeigt wird.
  2. Autorisieren Sie das Skript, wenn Sie dazu aufgefordert werden. Wenn auf dem OAuth-Zustimmungsbildschirm die Warnung Diese App wurde nicht überprüft angezeigt wird, wählen Sie Erweitert > aus. Rufen Sie {Project Name} auf (unsicher).

  3. Klicke auf Wertschätzung > Erstellen Sie die Zertifikate noch einmal.

  4. Sobald die Statusspalte aller Zeilen zu Erstellt geändert wurde, klicken Sie auf Anerkennung > Zertifikate senden.

Code ansehen

Um den Apps Script-Code für diese Lösung zu überprüfen, klicken Sie auf Sehen Sie sich den Quellcode unten an:

Quellcode ansehen

Code.gs

solutions/automations/employee-certificate/Code.js
// To learn how to use this script, refer to the documentation:
// https://developers.google.com/apps-script/samples/automations/employee-certificate

/*
Copyright 2022 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

const slideTemplateId = 'PRESENTATION_ID';
const tempFolderId = 'FOLDER_ID'; // Create an empty folder in Google Drive

/**
 * Creates a custom menu "Appreciation" in the spreadsheet
 * with drop-down options to create and send certificates
 */
function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('Appreciation')
      .addItem('Create certificates', 'createCertificates')
      .addSeparator()
      .addItem('Send certificates', 'sendCertificates')
      .addToUi();
}

/**
 * Creates a personalized certificate for each employee
 * and stores every individual Slides doc on Google Drive
 */
function createCertificates() {
  // Load the Google Slide template file
  const template = DriveApp.getFileById(slideTemplateId);

  // Get all employee data from the spreadsheet and identify the headers
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const values = sheet.getDataRange().getValues();
  const headers = values[0];
  const empNameIndex = headers.indexOf('Employee Name');
  const dateIndex = headers.indexOf('Date');
  const managerNameIndex = headers.indexOf('Manager Name');
  const titleIndex = headers.indexOf('Title');
  const compNameIndex = headers.indexOf('Company Name');
  const empEmailIndex = headers.indexOf('Employee Email');
  const empSlideIndex = headers.indexOf('Employee Slide');
  const statusIndex = headers.indexOf('Status');

  // Iterate through each row to capture individual details
  for (let i = 1; i < values.length; i++) {
    const rowData = values[i];
    const empName = rowData[empNameIndex];
    const date = rowData[dateIndex];
    const managerName = rowData[managerNameIndex];
    const title = rowData[titleIndex];
    const compName = rowData[compNameIndex];

    // Make a copy of the Slide template and rename it with employee name
    const tempFolder = DriveApp.getFolderById(tempFolderId);
    const empSlideId = template.makeCopy(tempFolder).setName(empName).getId();
    const empSlide = SlidesApp.openById(empSlideId).getSlides()[0];

    // Replace placeholder values with actual employee related details
    empSlide.replaceAllText('Employee Name', empName);
    empSlide.replaceAllText('Date', 'Date: ' + Utilities.formatDate(date, Session.getScriptTimeZone(), 'MMMM dd, yyyy'));
    empSlide.replaceAllText('Your Name', managerName);
    empSlide.replaceAllText('Title', title);
    empSlide.replaceAllText('Company Name', compName);

    // Update the spreadsheet with the new Slide Id and status
    sheet.getRange(i + 1, empSlideIndex + 1).setValue(empSlideId);
    sheet.getRange(i + 1, statusIndex + 1).setValue('CREATED');
    SpreadsheetApp.flush();
  }
}

/**
 * Send an email to each individual employee
 * with a PDF attachment of their appreciation certificate
 */
function sendCertificates() {
  // Get all employee data from the spreadsheet and identify the headers
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const values = sheet.getDataRange().getValues();
  const headers = values[0];
  const empNameIndex = headers.indexOf('Employee Name');
  const dateIndex = headers.indexOf('Date');
  const managerNameIndex = headers.indexOf('Manager Name');
  const titleIndex = headers.indexOf('Title');
  const compNameIndex = headers.indexOf('Company Name');
  const empEmailIndex = headers.indexOf('Employee Email');
  const empSlideIndex = headers.indexOf('Employee Slide');
  const statusIndex = headers.indexOf('Status');

  // Iterate through each row to capture individual details
  for (let i = 1; i < values.length; i++) {
    const rowData = values[i];
    const empName = rowData[empNameIndex];
    const date = rowData[dateIndex];
    const managerName = rowData[managerNameIndex];
    const title = rowData[titleIndex];
    const compName = rowData[compNameIndex];
    const empSlideId = rowData[empSlideIndex];
    const empEmail = rowData[empEmailIndex];

    // Load the employee's personalized Google Slide file
    const attachment = DriveApp.getFileById(empSlideId);

    // Setup the required parameters and send them the email
    const senderName = 'CertBot';
    const subject = empName + ', you\'re awesome!';
    const body = 'Please find your employee appreciation certificate attached.' +
    '\n\n' + compName + ' team';
    GmailApp.sendEmail(empEmail, subject, body, {
      attachments: [attachment.getAs(MimeType.PDF)],
      name: senderName
    });

    // Update the spreadsheet with email status
    sheet.getRange(i + 1, statusIndex + 1).setValue('SENT');
    SpreadsheetApp.flush();
  }
}

Beitragende

Diese Leseprobe wurde von Sourabh Choraria, Blogger und Google Developer erstellt Experte.

Dieses Beispiel wird von Google mit Unterstützung von Google-Entwicklerexperten verwaltet.

Nächste Schritte