פעולות ביומן

Action אובייקטים מאפשרים ליצור אובייקטים אינטראקטיביים ההתנהגות של המשתמשים בתוספים של Google Workspace. הם מגדירים מה קורה כשמשתמש מבצע אינטראקציה עם ווידג'ט (למשל, לחצן) בממשק המשתמש של התוסף.

הפעולה מצורפת לווידג'ט נתון באמצעות פונקציית הטיפול בווידג'ט, שמגדיר גם את התנאי שמפעיל את הפעולה. כשהפעולה מופעלת, היא מבצעת פונקציית קריאה חוזרת שהוגדרה מראש. פונקציית הקריאה החוזרת מועברת אובייקט אירוע שנושא מידע על האינטראקציות של המשתמש בצד הלקוח. צריך להטמיע את פונקציית ה-callback ולגרום לה להחזיר אובייקט תגובה ספציפי.

לדוגמה, נניח שאתם רוצים ליצור לחצן שיוצר כרטיס חדש ומציג אותו כשלוחצים עליו. לשם כך, צריך ליצור ווידג'ט חדש של לחצנים ולהשתמש בווידג'ט הלחצנים פונקציית handler setOnClickAction(action) כדי להגדיר בניית כרטיסים Action. Action שמגדירים מציין את Apps Script פונקציית קריאה חוזרת (callback) שמופעלת כשלוחצים על הלחצן. במקרה כזה, צריך להטמיע את פונקציית הקריאה החוזרת כדי ליצור את הכרטיס הרצוי ולהחזיר אובייקט ActionResponse. אובייקט התשובה מורה לתוסף להציג את הכרטיס שהקריאה אליו חוזרת גנרטיבית.

בדף הזה מתוארות פעולות בווידג'ט ספציפיות ליומן שאפשר לכלול

אינטראקציות ביומן

תוספים של Google Workspace שמרחיבים את יומן Google יכולים לכלול כמה פעולות נוספות של ווידג'טים שספציפיות ליומן Google. כדי לבצע את הפעולות האלה, פונקציית הקריאה החוזרת של הפעולה המשויכת צריכה להחזיר אובייקטים מיוחדים של תגובה:

בוצע ניסיון לפעולה פונקציית הקריאה החוזרת אמורה לחזור
הוספת משתתפים CalendarEventActionResponse
הגדרת נתוני כנס CalendarEventActionResponse
הוספת קבצים מצורפים CalendarEventActionResponse

כדי להשתמש בפעולות הווידג'ט ובאובייקטים של התגובה, צריך לבצע את כל חייב להיות True:

  • הפעולה מופעלת בזמן שאירוע ביומן של המשתמש פתוח.
  • שדה המניפסט addOns.calendar.currentEventAccess של התוסף מוגדר ל-WRITE או ל-READ_WRITE.
  • התוסף כולל את https://www.googleapis.com/auth/calendar.addons.current.event.write היקף היומן.

כמו כן, שינויים שמתבצעים על ידי פונקציית הקריאה החוזרת לפעולה לא יישמרו עד המשתמש שומר את האירוע ביומן.

הוספת משתתפים באמצעות פונקציית קריאה חוזרת

הדוגמה הבאה מראה איך ליצור לחצן שמוסיף משתתף ספציפי לאירוע ביומן Google שעורכים:

  /**
   * Build a simple card with a button that sends a notification.
   * This function is called as part of the eventOpenTrigger that builds
   * a UI when the user opens an event.
   *
   * @param e The event object passed to eventOpenTrigger function.
   * @return {Card}
   */
  function buildSimpleCard(e) {
    var buttonAction = CardService.newAction()
        .setFunctionName('onAddAttendeesButtonClicked');
    var button = CardService.newTextButton()
        .setText('Add new attendee')
        .setOnClickAction(buttonAction);

    // Check the event object to determine if the user can add
    // attendees and disable the button if not.
    if (!e.calendar.capabilities.canAddAttendees) {
      button.setDisabled(true);
    }

    // ...continue creating card sections and widgets, then create a Card
    // object to add them to. Return the built Card object.
  }

  /**
   * Callback function for a button action. Adds attendees to the
   * Calendar event being edited.
   *
   * @param {Object} e The action event object.
   * @return {CalendarEventActionResponse}
   */
  function onAddAttendeesButtonClicked (e) {
    return CardService.newCalendarEventActionResponseBuilder()
        .addAttendees(["aiko@example.com", "malcom@example.com"])
        .build();
  }

הגדרת נתוני שיחת ועידה עם פונקציית קריאה חוזרת

הפעולה הזו מגדירה את נתוני הוועידה באירוע הפתוח. בנתוני השיחה צריך לציין את מזהה הפתרון לשיחה, כי הפעולה לא הופעלה על ידי המשתמש שבחר את הפתרון הרצוי.

הדוגמה הבאה מראה איך ליצור לחצן שמגדיר את נתוני הוועידה לאירוע שעורכים:

  /**
   * Build a simple card with a button that sends a notification.
   * This function is called as part of the eventOpenTrigger that builds
   * a UI when the user opens a Calendar event.
   *
   * @param e The event object passed to eventOpenTrigger function.
   * @return {Card}
   */
  function buildSimpleCard(e) {
    var buttonAction = CardService.newAction()
        .setFunctionName('onSaveConferenceOptionsButtonClicked')
        .setParameters(
          {'phone': "1555123467", 'adminEmail': "joyce@example.com"});
    var button = CardService.newTextButton()
        .setText('Add new attendee')
        .setOnClickAction(buttonAction);

    // Check the event object to determine if the user can set
    // conference data and disable the button if not.
    if (!e.calendar.capabilities.canSetConferenceData) {
      button.setDisabled(true);
    }

    // ...continue creating card sections and widgets, then create a Card
    // object to add them to. Return the built Card object.
  }

  /**
   * Callback function for a button action. Sets conference data for the
   * Calendar event being edited.
   *
   * @param {Object} e The action event object.
   * @return {CalendarEventActionResponse}
   */
  function onSaveConferenceOptionsButtonClicked(e) {
    var parameters = e.commonEventObject.parameters;

    // Create an entry point and a conference parameter.
    var phoneEntryPoint = ConferenceDataService.newEntryPoint()
      .setEntryPointType(ConferenceDataService.EntryPointType.PHONE)
      .setUri('tel:' + parameters['phone']);

    var adminEmailParameter = ConferenceDataService.newConferenceParameter()
        .setKey('adminEmail')
        .setValue(parameters['adminEmail']);

    // Create a conference data object to set to this Calendar event.
    var conferenceData = ConferenceDataService.newConferenceDataBuilder()
        .addEntryPoint(phoneEntryPoint)
        .addConferenceParameter(adminEmailParameter)
        .setConferenceSolutionId('myWebScheduledMeeting')
        .build();

    return CardService.newCalendarEventActionResponseBuilder()
        .setConferenceData(conferenceData)
        .build();
  }

הוספת קבצים מצורפים באמצעות פונקציית קריאה חוזרת

בדוגמה הבאה מוסבר איך ליצור לחצן שמוסיף קובץ מצורף לאירוע ביומן Google שעורכים:

  /**
   * Build a simple card with a button that creates a new attachment.
   * This function is called as part of the eventAttachmentTrigger that
   * builds a UI when the user goes through the add-attachments flow.
   *
   * @param e The event object passed to eventAttachmentTrigger function.
   * @return {Card}
   */
  function buildSimpleCard(e) {
    var buttonAction = CardService.newAction()
        .setFunctionName('onAddAttachmentButtonClicked');
    var button = CardService.newTextButton()
        .setText('Add a custom attachment')
        .setOnClickAction(buttonAction);

    // Check the event object to determine if the user can add
    // attachments and disable the button if not.
    if (!e.calendar.capabilities.canAddAttachments) {
      button.setDisabled(true);
    }

    // ...continue creating card sections and widgets, then create a Card
    // object to add them to. Return the built Card object.
  }

  /**
   * Callback function for a button action. Adds attachments to the Calendar
   * event being edited.
   *
   * @param {Object} e The action event object.
   * @return {CalendarEventActionResponse}
   */
  function onAddAttachmentButtonClicked(e) {
    return CardService.newCalendarEventActionResponseBuilder()
             .addAttachments([
               CardService.newAttachment()
                 .setResourceUrl("https://example.com/test")
                 .setTitle("Custom attachment")
                 .setMimeType("text/html")
                 .setIconUrl("https://example.com/test.png")
             ])
        .build();
  }

הגדרת סמל הקובץ המצורף

סמל הקובץ המצורף צריך להתארח בתשתית של Google. פרטים נוספים זמינים במאמר הוספת סמלי קבצים מצורפים.