הגדרת פרויקט ב-Apps Script

קל להגדיר פרויקט של Apps Script שיפעיל את Google Forms API ישירות באמצעות קריאה ל-REST. נניח שכבר הגדרתם פרויקט ב-Google Cloud, עליכם לבצע את הפעולות הבאות:

  1. יוצרים פרויקט חדש ב-Apps Script.
  2. משנים את מספר הפרויקט המשויך ב-Google Cloud כך שיתאים לפרויקט שהפעלתם עבור Google Forms API.
  3. עורכים את קובץ המניפסט (appsscript.json) ומוסיפים את היקפי הרשאת OAuth הנדרשים.
  4. מוסיפים קוד של Apps Script כדי לאחזר אסימון OAuth ולבצע קריאה ל-REST באמצעות האסימון.

ריכזנו כאן הוראות מהירות לביצוע השלבים האלה.

יצירת פרויקט חדש של Apps Script והגדרתו

  1. באמצעות אותו מזהה Google שבו השתמשתם להגדרת הפרויקט ב-GCP, עוברים אל לוח הבקרה של Apps Script ולוחצים על פרויקט חדש.
  2. כשהפרויקט פתוח, לוחצים על Project Settings.
  3. מסמנים את התיבה הצגת קובץ המניפסט 'Appscript.json' בעורך.
  4. בקטע Google Cloud Platform (GCP) Project, לוחצים על Change project ומזינים את מספר הפרויקט ב-GCP שהגדרתם ל-Forms API.

עכשיו לפרויקט שלכם ב-Apps Script יש גישה ל-Google Forms API. השלב הבא הוא להוסיף את היקפי ההרשאות המתאימים ל-OAuth.

הוספת היקפי הרשאות של OAuth

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

  1. פותחים את הקובץ appsscript.json בעורך.
  2. מוסיפים את ההיקפים לגוף המניפסט.

    {
      ...
    "oauthScopes": [
        "https://www.googleapis.com/auth/script.external_request",
        "https://www.googleapis.com/auth/drive",
        "https://www.googleapis.com/auth/drive.readonly",
        "https://www.googleapis.com/auth/forms.body",
        "https://www.googleapis.com/auth/forms.body.readonly",
        "https://www.googleapis.com/auth/forms.responses.readonly"
      ],
     ...
     }
    
  3. לוחצים על Save project (שמירה של הפרויקט) ומתקנים את שגיאות התחביר לפי הצורך. עכשיו אמורה להיות לך אפשרות לקרוא ל-Google Forms API באמצעות קריאת REST.

הוספת קוד של Apps Script לקריאה ל-API

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

https://docs.google.com/forms/d/<FORM_ID>/edit

כדי לקרוא ל-API, משתמשים בקריאה UrlFetchApp של Apps Script.

  1. פותחים את Code.gs ומוסיפים את הקוד הבא:

    forms-api/snippets/retrieve_all_responses.gs
     function callFormsAPI() {
      console.log('Calling the Forms API!');
      var formId = '<YOUR_FORM_ID>';
    
      // Get OAuth Token
     var OAuthToken = ScriptApp.getOAuthToken();
     console.log('OAuth token is: ' + OAuthToken);
     var formsAPIUrl = 'https://forms.googleapis.com/v1/forms/' + formId + '/' + 'responses';
     console.log('formsAPIUrl is: ' + formsAPIUrl);
     var options = {
        'headers': {
          Authorization: 'Bearer ' + OAuthToken,
          Accept: 'application/json'
        },
        'method': 'get'
      };  
    var response = UrlFetchApp.fetch(formsAPIUrl, options);
     console.log('Response from forms.responses was: ' + response);
    }
  2. מחליפים את YOUR_FORM_ID בערך שציינתם קודם.

    לדוגמה: var formId = 'tL5ygBC8zpbTnTp76JCZdIg80hA-cnpbTnTjnsewCKJH';

  3. לוחצים על Save project (שמירת הפרויקט) ומתקנים את שגיאות התחביר, אם יש כאלה.

בדיקת הקוד

  1. לוחצים על Run.
  2. נותנים הרשאה לפרויקט לפי הצורך באמצעות אותו מזהה Google שבו השתמשתם קודם.

אחרי שהיא תתחיל, אמורה להופיע תגובה ביומן הביצועים שדומה לזו:

Execution started
Calling the Forms API!
OAuth token is: ya29.a0ARrdaM8IMjtlv…
formsAPIUrl is: https://forms.googleapis.com/v1beta/forms/…/responses
Response from Forms.responses was: {
"responses": [
    {
      "responseId":"...",
      "createTime": "2021-03-25T01:23:58.146Z",
      "lastSubmittedTime": "2021-03-25T01:23:58.146607Z",
      "answers": {
        "1e9b0ead": {
          "questionId": "1e9b0ead",
          "textAnswers": {
            "answers": [
              {
                "value": "Red"
              }
            ]
          }
        },
        "773ed8f3": {
          "questionId": "773ed8f3",
          "textAnswers": {
            "answers": [
              {
                "value": "Tesla"
              }
            ]
          }
        }
      }
    }
  ]
}
Execution completed

השלבים הבאים

אחרי שמשלימים קריאה ל-API באמצעות Apps Script, כדאי לעיין במסמכי העזרה ולנסות לבצע קריאות אחרות ל-API.