השהיה וחידוש של תהליך עבודה באמצעות קריאות חוזרות ו-Google Sheets

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

במדריך הזה נדגים איך ליצור ולפרוס תהליך עבודה שיוצר נקודת קצה של קריאה חוזרת (או webhook), שומר את כתובת ה-URL של הקריאה החוזרת ב-Google Sheets, משהה את ההפעלה ואז מחכה לאישור אנושי דרך גיליון האלקטרוני של Sheets כדי להפעיל מחדש את תהליך העבודה. מידע נוסף על שימוש בהחזרת שיחות

מטרות

במדריך הזה תלמדו:

  1. יוצרים תיקייה חדשה ב-Google Drive. התיקייה הזו משמשת לאחסון הגיליון האלקטרוני, ומאפשרת לתהליך העבודה לכתוב בגיליון האלקטרוני.
  2. יוצרים גיליון אלקטרוני ב-Google Sheets כדי לתעד אישור ולהפעיל קריאה חוזרת לתהליך עבודה.
  3. אפשר להשתמש ב-Google Apps Script, פלטפורמת JavaScript מבוססת-ענן שמאפשרת ליצור, לקרוא ולערוך מוצרים של Google Workspace באופן פרוגרמטי, כדי להפעיל מחדש תהליך עבודה שהושהה בכל פעם שבקשה מאושרת באמצעות עדכון של הגיליון האלקטרוני.
  4. יצירה ופריסה של תהליך עבודה שקורא למחבר Google Sheets API כדי להוסיף נתונים לגיליון האלקטרוני. תהליך העבודה מופעל, מושהה ואז ממשיך כשהקריאה החוזרת מאושרת דרך הגיליון האלקטרוני. מידע נוסף על מחברים של Workflows
  5. בודקים את התהליך כולו ומוודאים שתהליך העבודה מתבצע כמו שציפיתם.

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

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

משתמשים חדשים של Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

במדריך הזה נעשה שימוש גם ב-Google Workspace. שירותים ברמה עסקית שלא כלולים באפליקציות הבסיסיות של Google שזמינות בחינם הם שירותים בתשלום.

לפני שמתחילים

אפשר להריץ חלק מהפקודות הבאות במסוף Google Cloud או באמצעות Google Cloud CLI בטרמינל או ב-Cloud Shell.

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

המסוף

  1. בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.

    כניסה לדף לבחירת הפרויקט

  2. מוודאים שהחיוב מופעל בפרויקט Google Cloud . כך בודקים אם החיוב מופעל בפרויקט

  3. מפעילים את ממשקי ה-API של Compute Engine,‏ Sheets ו-Workflows.

    הפעלת ממשקי ה-API

  4. חשוב שתשימו לב לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, כי תצטרכו לקשר אותו לתהליך העבודה במדריך הזה לצורך בדיקה. בפרויקטים חדשים שבהם מופעל Compute Engine API, חשבון השירות הזה נוצר עם תפקיד העריכה הבסיסי ב-IAM, ובפורמט האימייל הבא:

    PROJECT_NUMBER-compute@developer.gserviceaccount.com

    אפשר לראות את מספר הפרויקט בדף Welcome במסוף Google Cloud .

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

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. מוודאים שהחיוב מופעל בפרויקט Google Cloud . כך בודקים אם החיוב מופעל בפרויקט

  3. מפעילים את ממשקי ה-API של Compute Engine,‏ Sheets ו-Workflows.

    gcloud services enable \
        compute.googleapis.com \
        sheets.googleapis.com \
        workflows.googleapis.com
  4. חשוב שתשימו לב לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, כי תצטרכו לקשר אותו לתהליך העבודה במדריך הזה לצורך בדיקה. בפרויקטים חדשים שבהם מופעל Compute Engine API, חשבון השירות הזה נוצר עם תפקיד העריכה הבסיסי ב-IAM, ובפורמט האימייל הבא:

    PROJECT_NUMBER-compute@developer.gserviceaccount.com

    אפשר לאחזר את מספר הפרויקט:

    gcloud projects describe PROJECT_ID

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

יצירת תיקייה חדשה ב-Google Drive

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

  1. בקר בכתובת drive.google.com.
  2. לוחצים על חדש > תיקייה חדשה.
  3. מזינים שם לתיקייה.
  4. לוחצים על יצירה.
  5. לוחצים לחיצה ימנית על התיקייה החדשה ובוחרים באפשרות שיתוף.
  6. מוסיפים את כתובת האימייל של חשבון השירות שמוגדר כברירת המחדל של Compute Engine.

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

  7. בוחרים את התפקיד עריכה.

  8. מבטלים את הסימון בתיבת הסימון שליחת הודעה לאנשים.

  9. לוחצים על שיתוף.

יצירת גיליון אלקטרוני באמצעות Google Sheets

כשיוצרים גיליון אלקטרוני באמצעות Google Sheets, הוא נשמר ב-Google Drive. כברירת מחדל, הגיליון האלקטרוני נשמר בתיקיית הבסיס ב-Drive. אין אפשרות ליצור גיליון אלקטרוני ישירות בתיקייה ספציפית באמצעות Google Sheets API. עם זאת, יש חלופות, כולל העברת הגיליון האלקטרוני לתיקייה ספציפית אחרי שיוצרים אותו, כמו בדוגמה הזו. מידע נוסף זמין במאמר עבודה עם תיקיות ב-Google Drive.

  1. עוברים אל sheets.google.com.

  2. לוחצים על חדש Plus.

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

    https://docs.google.com/spreadsheets/d/spreadsheetId/edit#gid=0

  3. חשוב לזכור את המזהה הזה כי תצטרכו אותו כשתיצרו את תהליך העבודה.

  4. מוסיפים כותרות לעמודות בהתאם לדוגמה הבאה:

    דוגמה לגיליון אלקטרוני לתיעוד אישורים

    שימו לב שהערך בעמודה G, Approved?‎, משמש להפעלת קריאות חוזרות בתהליך העבודה.

  5. מעבירים את הגיליון האלקטרוני לתיקיית Google Drive שיצרתם קודם:

    1. בגיליון האלקטרוני, בוחרים באפשרות קובץ > העברה.
    2. עוברים לתיקייה שיצרתם.
    3. לוחצים על Move.

אפשר גם להשתמש במחבר Google Sheets API כדי ליצור גיליון אלקטרוני. הערה: כשמשתמשים בכלי לחיבור, אפשר לאחזר את spreadsheetId מהתוצאה resp. לדוגמה:

- create_spreadsheet:
    call: googleapis.sheets.v4.spreadsheets.create
    args:
      body:
      connector_params:
        scopes: ${driveScope}
    result: resp
- assign_sheet_id:
    assign:
      - sheetId: ${resp.spreadsheetId}

הרחבת Google Sheets באמצעות Apps Script

‫Apps Script מאפשר ליצור, לקרוא ולערוך גיליונות אלקטרוניים של Google Sheets באופן פרוגרמטי. רוב הסקריפטים שמיועדים ל-Sheets מבצעים מניפולציות במערכים כדי ליצור אינטראקציה עם התאים, השורות והעמודות בגיליון אלקטרוני. למבוא לשימוש ב-Apps Script עם Google Sheets, אפשר לעיין במדריך למתחילים בנושא פונקציות בהתאמה אישית.

  1. יצירת פרויקט Apps Script מ-Google Sheets:

    1. פותחים את הגיליון האלקטרוני ב-Sheets.
    2. בוחרים באפשרות תוספים > Apps Script.
    3. בכלי לעריכת סקריפטים, לוחצים על Untitled project (פרויקט ללא שם).
    4. נותנים שם לפרויקט ולוחצים על שינוי השם.

    התסריט עכשיו מקשר לגיליון האלקטרוני, מה שנותן לתסריט יכולות מיוחדות לשנות את ממשק המשתמש או להגיב כשהגיליון האלקטרוני נפתח.

    פרויקט סקריפט מייצג אוסף של קבצים ומשאבים של Apps Script. לקובצי קוד בפרויקט סקריפט יש סיומת .gs.

  2. אתם יכולים להשתמש ב-Apps Script כדי לכתוב פונקציות בהתאמה אישית שתוכלו להשתמש בהן ב-Google Sheets בדיוק כמו בפונקציה מובנית. פונקציות בהתאמה אישית נוצרות באמצעות JavaScript רגיל. כדי ליצור פונקציה:

    1. פותחים את פרויקט Apps Script.
    2. לוחצים על עריכה .
    3. קובץ סקריפט מופיע כקובץ פרויקט בשם Code.gs. כדי לערוך את הקובץ, בוחרים אותו.
    4. מחליפים את הקוד בכלי לעריכת סקריפטים בקוד הבא, שקורא את הנתונים בגיליון האלקטרוני ומעביר אותם כקלט להרצת תהליך עבודה:

      function handleEdit(e) {
        var range = e.range.getA1Notation();
        var sheet = e.source;
      
        if (range.length > 1 && range[0] === 'G') {
          if (e.value == "TRUE") {
            Logger.log("Approved: TRUE");
      
            var row = range.slice(1);
            var url = sheet.getRange('E' + row).getCell(1, 1).getValue();
            var approver = sheet.getRange('F' + row).getCell(1, 1).getValue();
      
            callback(url, approver);
          }
          else {
            Logger.log("Approved: FALSE");
          }
        }
      }
      
      function callback(url, approver) {
        const headers = {
          "Authorization": "Bearer " + ScriptApp.getOAuthToken()
        };
      
        var payload = {
          'approver': approver
        };
      
        const params = {
          "method": 'POST',
          "contentType": 'application/json',
          "headers": headers,
          "payload": JSON.stringify(payload)
        };
      
      
        Logger.log("Workflow callback request to " + url);
        var response = UrlFetchApp.fetch(url, params);
        Logger.log(response);
      }
    5. לוחצים על סמל השמירה .

  3. טריגרים שאפשר להתקין ב-Apps Script מאפשרים להריץ פונקציה מסוימת בפרויקט סקריפט כשמתקיימים תנאים מסוימים, למשל כשפותחים או עורכים גיליון אלקטרוני. כדי ליצור טריגר:

    1. פותחים את פרויקט Apps Script.
    2. לוחצים על Triggers (טריגרים) .
    3. לוחצים על Add Trigger (הוספת טריגר).
    4. בתיבת הדו-שיח Add Trigger for YOUR_PROJECT_NAME (הוספת טריגר ל-YOUR_PROJECT_NAME), מגדירים את הטריגר:
      1. ברשימה Choose which function to run (בחירת הפונקציה להפעלה), בוחרים באפשרות handleEdit.
      2. ברשימה Choose which deployment should run (בחירת הפריסה להפעלה), בוחרים באפשרות Head (ראשי).
      3. ברשימה בחירת מקור אירועים, בוחרים באפשרות מגיליון אלקטרוני.
      4. ברשימה Select event type (בחירת סוג האירוע), בוחרים באפשרות On edit (בעריכה).
      5. ברשימה הגדרות התראות על כשל, בוחרים באפשרות התראה יומית.
    5. לוחצים על Save.
    6. אם מוצגת בקשה לבחירת חשבון Google, בוחרים את החשבון המתאים ולוחצים על אישור.

      ההרשאה הזו מאפשרת לפרויקט Apps Script שלכם לראות, לערוך, ליצור ולמחוק את הגיליונות האלקטרוניים שלכם ב-Google Sheets, וגם להתחבר לשירות חיצוני.

  4. קובץ המניפסט של פרויקט Apps Script הוא קובץ JSON שמצוינים בו פרטי פרויקט בסיסיים ש-Apps Script צריך כדי להריץ סקריפט בהצלחה. שימו לב: הכלי לעריכת סקריפטים של Apps Script מסתיר כברירת מחדל את קובצי המניפסט כדי להגן על הגדרות הפרויקט של Apps Script. עורכים את קובץ המניפסט:

    1. פותחים את פרויקט Apps Script.
    2. לוחצים על הגדרות הפרויקט .
    3. מסמנים את התיבה הצגת קובץ המניפסט 'appsscript.json' בעורך.
    4. לוחצים על עריכה .
    5. קובץ המניפסט מופיע כקובץ פרויקט בשם appsscript.json. כדי לערוך את הקובץ, בוחרים אותו.
    6. השדה oauthScopes מציין מערך של מחרוזות. כדי להגדיר את היקפי ההרשאות שבהם הפרויקט משתמש, מוסיפים מערך עם ההיקפים שרוצים לתמוך בהם. לדוגמה:

      {
        "timeZone": "America/Toronto",
        "dependencies": {
        },
        "exceptionLogging": "STACKDRIVER",
        "runtimeVersion": "V8",
        "oauthScopes": [
          "https://www.googleapis.com/auth/script.external_request",
          "https://www.googleapis.com/auth/cloud-platform",
          "https://www.googleapis.com/auth/spreadsheets"
        ]
      }

      ההגדרה הזו קובעת את ההיקפים המפורשים הבאים:

      • התחברות לשירות חיצוני
      • קריאה, עריכה, הגדרה ומחיקה של הנתונים שלך ב- Google Cloud , וקריאת כתובת האימייל של החשבון שלך ב-Google
      • הצגה, עריכה, יצירה ומחיקה של כל הגיליונות האלקטרוניים שלך ב-Google Sheets
    7. לוחצים על סמל השמירה .

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

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

המסוף

  1. נכנסים לדף Workflows במסוף Google Cloud :

    כניסה לדף Workflows

  2. לוחצים על Create.

  3. מזינים שם לתהליך העבודה החדש: workflows-awaits-callback-sheets.

  4. ברשימה Region, בוחרים באפשרות us-central1 (Iowa).

  5. בקטע חשבון שירות, בוחרים את חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine‏ (PROJECT_NUMBER-compute@developer.gserviceaccount.com).

  6. לוחצים על הבא.

  7. בעורך תהליכי העבודה, מזינים את ההגדרה הבאה לתהליך העבודה:

    main:
      steps:
        - init:
            assign:
            # Replace with your sheetId and make sure the service account
            # for the workflow has write permissions to the sheet
            - sheetId: "10hieAH6b-oMeIVT_AerSLNxQck14IGhgi8ign-x2x8g"
        - before_sheets_callback:
            call: sys.log
            args:
              severity: INFO
              data: ${"Execute steps here before waiting for callback from sheets"}
        - wait_for_sheets_callback:
            call: await_callback_sheets
            args:
              sheetId: ${sheetId}
            result: await_callback_result
        - after_sheets_callback:
            call: sys.log
            args:
              severity: INFO
              data: ${"Execute steps here after receiving callback from sheets"}
        - returnResult:
            return: ${await_callback_result}
    
    await_callback_sheets:
        params: [sheetId]
        steps:
            - init:
                assign:
                  - project_id: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                  - location: ${sys.get_env("GOOGLE_CLOUD_LOCATION")}
                  - workflow_id: ${sys.get_env("GOOGLE_CLOUD_WORKFLOW_ID")}
                  - execution_id: ${sys.get_env("GOOGLE_CLOUD_WORKFLOW_EXECUTION_ID")}
            - create_callback:
                call: events.create_callback_endpoint
                args:
                  http_callback_method: POST
                result: callback_details
            - save_callback_to_sheets:
                call: googleapis.sheets.v4.spreadsheets.values.append
                args:
                    range: ${"Sheet1!A1:G1"}
                    spreadsheetId: ${sheetId}
                    valueInputOption: RAW
                    body:
                        majorDimension: "ROWS"
                        values:
                          - ["${project_id}", "${location}", "${workflow_id}", "${execution_id}", "${callback_details.url}", "", "FALSE"]
            - log_and_await_callback:
                try:
                  steps:
                    - log_await_start:
                        call: sys.log
                        args:
                          severity: INFO
                          data: ${"Started waiting for callback from sheet " + sheetId}
                    - await_callback:
                        call: events.await_callback
                        args:
                          callback: ${callback_details}
                          timeout: 3600
                        result: callback_request
                    - log_await_stop:
                        call: sys.log
                        args:
                          severity: INFO
                          data: ${"Stopped waiting for callback from sheet " + sheetId}
                except:
                    as: e
                    steps:
                        - log_error:
                            call: sys.log
                            args:
                                severity: "ERROR"
                                text: ${"Received error " + e.message}
            - check_null_await_result:
                switch:
                  - condition: ${callback_request == null}
                    return: null
            - log_await_result:
                call: sys.log
                args:
                  severity: INFO
                  data: ${"Approved by " + callback_request.http_request.body.approver}
            - return_await_result:
                return: ${callback_request.http_request.body}
  8. חשוב להחליף את הערך של מציין המקום sheetId בערך spreadsheetId.

  9. לוחצים על פריסה.

gcloud

  1. יוצרים קובץ קוד מקור לתהליך העבודה:

    touch workflows-awaits-callback-sheets.yaml
  2. בכלי לעריכת טקסט, מעתיקים את זרימת העבודה הבאה לקובץ קוד המקור:

    main:
      steps:
        - init:
            assign:
            # Replace with your sheetId and make sure the service account
            # for the workflow has write permissions to the sheet
            - sheetId: "10hieAH6b-oMeIVT_AerSLNxQck14IGhgi8ign-x2x8g"
        - before_sheets_callback:
            call: sys.log
            args:
              severity: INFO
              data: ${"Execute steps here before waiting for callback from sheets"}
        - wait_for_sheets_callback:
            call: await_callback_sheets
            args:
              sheetId: ${sheetId}
            result: await_callback_result
        - after_sheets_callback:
            call: sys.log
            args:
              severity: INFO
              data: ${"Execute steps here after receiving callback from sheets"}
        - returnResult:
            return: ${await_callback_result}
    
    await_callback_sheets:
        params: [sheetId]
        steps:
            - init:
                assign:
                  - project_id: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                  - location: ${sys.get_env("GOOGLE_CLOUD_LOCATION")}
                  - workflow_id: ${sys.get_env("GOOGLE_CLOUD_WORKFLOW_ID")}
                  - execution_id: ${sys.get_env("GOOGLE_CLOUD_WORKFLOW_EXECUTION_ID")}
            - create_callback:
                call: events.create_callback_endpoint
                args:
                  http_callback_method: POST
                result: callback_details
            - save_callback_to_sheets:
                call: googleapis.sheets.v4.spreadsheets.values.append
                args:
                    range: ${"Sheet1!A1:G1"}
                    spreadsheetId: ${sheetId}
                    valueInputOption: RAW
                    body:
                        majorDimension: "ROWS"
                        values:
                          - ["${project_id}", "${location}", "${workflow_id}", "${execution_id}", "${callback_details.url}", "", "FALSE"]
            - log_and_await_callback:
                try:
                  steps:
                    - log_await_start:
                        call: sys.log
                        args:
                          severity: INFO
                          data: ${"Started waiting for callback from sheet " + sheetId}
                    - await_callback:
                        call: events.await_callback
                        args:
                          callback: ${callback_details}
                          timeout: 3600
                        result: callback_request
                    - log_await_stop:
                        call: sys.log
                        args:
                          severity: INFO
                          data: ${"Stopped waiting for callback from sheet " + sheetId}
                except:
                    as: e
                    steps:
                        - log_error:
                            call: sys.log
                            args:
                                severity: "ERROR"
                                text: ${"Received error " + e.message}
            - check_null_await_result:
                switch:
                  - condition: ${callback_request == null}
                    return: null
            - log_await_result:
                call: sys.log
                args:
                  severity: INFO
                  data: ${"Approved by " + callback_request.http_request.body.approver}
            - return_await_result:
                return: ${callback_request.http_request.body}
  3. חשוב להחליף את הערך של מציין המקום sheetId בערך spreadsheetId.

  4. מריצים את הפקודה הבאה כדי לפרוס את תהליך העבודה:

    gcloud workflows deploy workflows-awaits-callback-sheets \
        --source=workflows-awaits-callback-sheets.yaml \
        --location=us-central1 \
        --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

    מחליפים את PROJECT_NUMBER במספר הפרויקט ב- Google Cloud. אפשר לאחזר את מספר הפרויקט:

    gcloud projects describe PROJECT_ID

בדיקת התהליך מקצה לקצה

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

המסוף

  1. נכנסים לדף Workflows במסוף Google Cloud :

    כניסה לדף Workflows

  2. בדף Workflows, בוחרים את זרימת העבודה workflows-awaits-callback-sheets כדי לעבור לדף הפרטים שלה.

  3. בדף פרטי תהליך העבודה, לוחצים על הפעלה.

  4. לוחצים שוב על Execute.

    תהליך העבודה מתחיל ומצב הביצוע שלו צריך להיות Running. בנוסף, ביומנים מצוין שתהליך העבודה מושהה וממתין:

    Execute steps here before waiting for callback from sheets
    ...
    Started waiting for callback from sheet 1JlNFFnqs760M_KDqeeeDc_qtrABZDxoalyCmRE39dpM
  5. מוודאים שפרטי הקריאה החוזרת נכתבו בשורה בגיליון האלקטרוני.

    לדוגמה, בעמודה Execution ID אמור להופיע מזהה ההפעלה של תהליך העבודה, בעמודה Callback URL אמורה להופיע נקודת קצה של קריאה חוזרת, ובעמודה Approved? אמור להופיע הערך FALSE.

  6. בגיליון האלקטרוני, משנים את הערך FALSE לערך TRUE.

    אחרי דקה או שתיים, הביצוע אמור להימשך ולהסתיים עם מצב ביצוע של Succeeded.

gcloud

  1. פותחים טרמינל.

  2. מריצים את תהליך העבודה:

      gcloud workflows run workflows-awaits-callback-sheets

    תהליך העבודה מתחיל והפלט צריך לציין שתהליך העבודה מושהה וממתין:

      Waiting for execution [a8361789-90e0-467f-8bd7-ea1c81977820] to complete...working.

  3. מוודאים שפרטי הקריאה החוזרת נכתבו בשורה בגיליון האלקטרוני.

    לדוגמה, בעמודה Execution ID אמור להופיע מזהה ההפעלה של תהליך העבודה, בעמודה Callback URL אמורה להופיע נקודת קצה של קריאה חוזרת, ובעמודה Approved? אמור להופיע הערך FALSE.

  4. בגיליון האלקטרוני, משנים את הערך FALSE לערך TRUE.

    אחרי דקה או שתיים, הביצוע אמור להתחדש ואז להסתיים עם מצב ביצוע של SUCCEEDED.

הסרת המשאבים

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

מחיקת הפרויקט

הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.

כדי למחוק את הפרויקט:

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

מחיקת משאבים שנוצרו במדריך הזה

  1. איך מוחקים קבצים ב-Google Drive
  2. מחיקת תהליך עבודה

המאמרים הבאים