פריסת סקריפט בגוגל סקריפט כאפליקציית אינטרנט דרך סקריפט אחר
-
אני מעונין לפרוס סקריפט של גוגל סקריפט כאפליקציית אינטרנט (
doGet
) בצורה אוטומטית דרך סקריפט אחר או דרך הסקריפט עצמו ללא מגע יד אדם בכפתור...מחיפוש גוגל על הנושא מצאתי שדרך ה API של Google Apps Script API זה אמור להיות אפשרי
דא עקא שבתיעוד מצאתי רק דרך לעדכן פריסה של סקריפט שנפרס בעבר אבל לא פריסה ראשונית
אשמח לכל מידע בנושא -
@מיכאלוש בגדול זה אמור להיות ככה:
function sendRequest() { let apiKey = `YOUR_API_KEY`; let accessToken = `YOUR_ACCESS_TOKEN`; var url = `https://script.googleapis.com/v1/projects/scriptId/deployments?key=${apiKey}`; var payload = { "description": "description", "manifestFileName": "manifestFileName", "scriptId": "scriptId", "versionNumber": 0 }; var options = { "method": "post", "headers": { "Authorization": "Bearer " + accessToken, "Accept": "application/json", "Content-Type": "application/json" }, "payload": JSON.stringify(payload) }; var response = UrlFetchApp.fetch(url, options); Logger.log(response.getContentText()); }
apiKey = מפתח API של גוגל קלאוד
accessToken = אישור OAuth להרשאות היישום.פרטים על היקפי ההרשאות https://developers.google.com/identity/protocols/oauth2/scopes
תצטרך חשבון כאן (חינמי, דורש פרטי אשראי)
https://console.cloud.google.com/welcomeבעיקרון יש לגוגל מאמרי עזרה הדרכות ודוגמאות (בעיקר באנגלית) מפורטים על כל שלב ושלב, רק שלפעמים מרוב מאמרים קצת הולכים לאיבוד...
בשביל ההתחלה קח את העיקרון, בכל מוצר/שירות יש את המאמר של "מתחילים" או משהו דומה, שמה כתובים המושגים החדשים והישנים שצריך להכיר בשביל להבין את התיעוד, זה המסמך שהכי חשוב לקרוא כל השאר - לפי הצורך.
אח"כ ניתן להגיע להכל דרך חיפוש גוגל או שורת החיפוש של גוגל דאב עצמו..
-
@אביי מהו ה"apiKey = מפתח API של גוגל קלאוד" שכתבת? לא מופיע בתיעוד שאפשר להשתמש בAPI הזה בפרמטר key לאימות,
כמה שידוע לי העיקרון הוא שאי אפשר להשתמש בשיטת אימות של key לשום API שניגש לנתונים אישיים אלא רק לAPI ציבוריים שם הkey משמש כדי לשייך להגבלות ו/או חיוב על שימוש, לדוגמה Google Maps API או Google Drive API.
בכל API שניגש לנתונים של משתמש צריך להשתמש בOAuth 2.0 (בחלקם אפשר גם חשבון שירות).
השימוש בOAuth 2.0 בתוך גוגל סקריפט הוא ממש פשוט - מקבלים טוקן על ידי קריאה לScriptApp.getOAuthToken
:... "headers": { "Authorization": `Bearer ${ScriptApp.getOAuthToken()}`, ...
מראי מקום:
- דוגמה מלאה
- https://developers.google.com/apps-script/reference/script/script-app?hl=he#getoauthtoken
ואין צורך בפרטי אשראי בשביל להשתמש בGoogle Cloud.
-
@צדיק-תמים כתב בפריסת סקריפט בגוגל סקריפט כאפליקציית אינטרנט דרך סקריפט אחר:
ואין צורך בפרטי אשראי בשביל להשתמש בGoogle Cloud.
הוא לא נותן לי להתקדם ללא פרטי אשראי
-
@כמה-טוב-השם לא התייחסתי לפלטפורמת השרתים של גוגל, Google Cloud Platform (שדורשת כרטיס), אלא בכללי לשירותי הAPI שלהם, שרובם לא דורשים כלל פרטי אשראי, כולל זה שנידון כאן.
כנראה בחרת בשירות מסוים שכן דורש פרטי אשראי, לדוגמה שרתים או שירות אחר שבתשלום. -
@מיכאלוש כתב בפריסת סקריפט בגוגל סקריפט כאפליקציית אינטרנט דרך סקריפט אחר:
@אביי קצת הסתבכתי... איך אני כותב את זה בפועל ?
זה פונקציה שיוצאת פריסה חדשה:
function sendRequest() { var url = `https://script.googleapis.com/v1/projects/${ScriptApp.getScriptId()}/deployments`; var payload = { "description": "description", "scriptId": ScriptApp.getScriptId() }; var options = { "method": "post", "headers": { "Authorization": `Bearer ${ScriptApp.getOAuthToken()}`, "Accept": "application/json", "Content-Type": "application/json" }, "payload": JSON.stringify(payload), "muteHttpExceptions": true }; var response = UrlFetchApp.fetch(url, options); Logger.log(response.getContentText()); }
משום מה הוא מדפיס לי שגיאה בהיקף ההרשאות, לא ברור לי עדיין למה.
תעדכן אם הצלחת
-
@אביי לא יודע אם השגיאה קשורה להיקף ההרשאות אבל כמו שכתבת מחזיר שגיאה
הקוד שגיאה{ "error": { "code": 403, "message": "Request had insufficient authentication scopes.", "status": "PERMISSION_DENIED", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "reason": "ACCESS_TOKEN_SCOPE_INSUFFICIENT", "domain": "googleapis.com", "metadata": { "service": "script.googleapis.com", "method": "google.apps.script.management.v1.DeploymentsService.CreateDeployment" } } ] } }