שינוי פעולות

ה-API של Google Slides מאפשר לכם לשנות את המיקום, הגודל והכיוון של PageElement (תיבות טקסט, תמונות, טבלאות וצורות בסיסיות) בדף, תוך שמירה על קווים נקודות ישרות ושומרות על קווים מקבילים. הקהלים האלה נקראים תוכן עם תחום עניין משותף וטרנספורמציות. הדוגמאות כאן מראות כמה רכיבי דף נפוצים טרנספורמציה פעולות באמצעות presentations.batchUpdate .

בדוגמאות האלה משתמשים במשתנים הבאים:

  • PRESENTATION_ID – מציין איפה אתם מספקים את מצגת מזהה. אפשר לגלות את הערך של המזהה בכתובת ה-URL של המצגת.
  • PAGE_ID – מציין איפה מספקים את אובייקט הדף מזהה. אפשר לאחזר את הערך הזה מכתובת ה-URL או באמצעות בקשת קריאה ל-API.
  • PAGE_ELEMENT_ID – מציין איפה מספקים את הדף מזהה אובייקט של רכיב. שלך יכול לציין את המזהה הזה לרכיבים שאתה יוצר (בעזרת חלק הגבלות) או לאפשר ל-API של Slides ליצור אותו באופן אוטומטי. מזהי הרכיבים להיות נגישים באמצעות בקשת קריאה של API.

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

צורת חץ לדוגמה

בדוגמאות הבאות, נניח שקיים דף לדוגמה של צורת חץ עם נתונים בגודל הבא ולבצע טרנספורמציה שלהם (שנמצאת עם presentations.pages.get ). הצורה לדוגמה משתמשת במדידה unit EMU (יחידת מדדים באנגלית) ונקודות (pt) (נקודה).

{
  "objectId": PAGE_ELEMENT_ID,
  "size": {
    "width": {
      "magnitude": 3000000,
      "unit": "EMU"
    },
    "height": {
      "magnitude": 3000000,
      "unit": "EMU"
    }
  },
  "transform": {
    "scaleX": 0.3,
    "scaleY": 0.12,
    "shearX": 0,
    "shearY": 0,
    "translateX": 2000000,
    "translateY":  550000,
    "unit": "EMU"
  },
  "shape": {
    "shapeType": "RIGHT_ARROW"
  }
}

יישור רכיב עם רכיב אחר

הבאים presentations.batchUpdate דוגמת הקוד מראה איך להשתמש CreateShapeRequest ליצירת צורות חדשות במיקומים הנכונים המיושרים עם צורה של חץ לדוגמה בדף. בשני המקרים, X ו-Y של הפינה השמאלית העליונה של הצורה החדשה.

הבקשה הראשונה יוצרת מלבן בגודל 100 על 50 נקודות, המיושר לשמאל גבול של צורת החץ, אבל הוא ממוקם 50 נק' (50 * 12,700 = 635,000 EMU) מתחת לקצה העליון של החץ. קואורדינטת ה-X של המלבן החדש צריכה להיות זהה לקואורדינטת ה-X של החץ כדי לשמור על גבול שמאלי. ה-Y זהה לקואורדינטת ה-Y של החץ ועוד 50 נק', מכיוון המרחק נמדד בחלק העליון של החץ. הקואורדינטות של המלבן לכן:

x" = 2000000 EMU
y" = 550000 + (50 * 12700) = 1185000 EMU

הבקשה השנייה יוצרת עיגול ברוחב 40 נקודות בעל אותו פורמט אופקי קו אמצעי בתור חץ לדוגמה, אבל הוא ממוקם בגודל 100 נק' (1,270,000 EMU) מימין לקצה הימני של החץ. קואורדינטת X של המעגל היא הסכום של קואורדינטת ה-X של החץ, רוחב החץ ו-100 נק' אכיפת קו האמצע היישור של המעגל החדש מחייב להביא בחשבון את הגובה של בחץ עם העיגול. קואורדינטת ה-Y של המעגל היא קואורדינטת ה-Y של החץ בתוספת חצי מגובה החץ פחות חצי מגובה המעגל. בשני המקרים, הפרמטר יש להביא בחשבון גם את גורמי המידה המשויכים לחץ, כי הן משפיעות על הרוחב והגובה של החץ שמוצג. של המעגל כלומר, הן:

x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU
y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU

זה פרוטוקול הבקשה ליישור רכיב לרכיב אחר:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createShape": {
        "shapeType": "RECTANGLE",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 100,
              "unit": "PT"
            },
            "height": {
              "magnitude": 50,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 2000000,
            "translateY": 1185000,
            "unit": "EMU"
          }
        }
      }
    },
    {
      "createShape": {
        "shapeType": "ELLIPSE",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 40,
              "unit": "PT"
            },
            "height": {
              "magnitude": 40,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 4170000,
            "translateY":  476000,
            "unit": "EMU"
          }
        }
      }
    }
  ]
}

העברת רכיב

הבאים presentations.batchUpdate דוגמת הקוד מראה איך להשתמש UpdatePageElementTransformRequest שיטה לתרגום המרכיב של הדף צורה של חץ לדוגמה בשתי דרכים שונות.

הבקשה הראשונה באצווה מעבירה את החץ אל (X,Y) = (2000000, 150000) קואורדינטת EMU (באמצעות תרגום מוחלט) applyMode). הבקשה השנייה באצווה מעבירה את החץ משם, הפעם 40,000 EMU משמאל ו-35,000 EMU למעלה (באמצעות תרגום יחסי applyMode). המטריצות של טרנספורמציה1 כדי שלא לשנות את הגודל והכיוון של הרכיב.

אחרי ביצוע שתי הבקשות, הפינה הימנית העליונה של החץ נמצאת באזור (X,Y) = (2040000, 115000) קואורדינטת EMU.

זה פרוטוקול הבקשה להעברת רכיב:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "ABSOLUTE",
        "transform": {
            "scaleX": 0.3,
            "scaleY": 0.12,
            "translateX": 2000000,
            "translateY":  150000,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX":  40000,
            "translateY": -35000,
            "unit": "EMU"
        }
      }
    }
  ]
}

השתקפות של יסוד

הבאים presentations.batchUpdate דוגמת הקוד מראה איך להשתמש UpdatePageElementTransformRequest שיטה שמשקפת את רכיב הדף לדוגמה לצורה של חץ לרוחב במרכזו, מבלי לשנות את מיקומו בדף או לבצע התאמה לעומס (scaling).

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

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

זה פרוטוקול הבקשה שמשקף רכיב:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX": -2000000 - 0.5 * 0.3  * 3000000,
            "translateY":  -550000 - 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": -1,
            "scaleY":  1,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}

שינוי גודל של רכיב

הבאים presentations.batchUpdate דוגמת הקוד מראה איך להשתמש UpdatePageElementTransformRequest שיטה לשינוי גודל רכיב הדף לצורה של חץ לדוגמה ל-50% רחב יותר וכולל רק 80% מהגובה הנוכחי שלו, תוך שמירה על מרכז החץ באותו מיקום ולשמור על הכיוון שלו.

הדבר נעשה באמצעות התאמה בסיסית לעומס (scaling) טרנספורמציה בהפניה של האלמנט מסגרת. לשם הבהרה, שינוי הפריים והתאמה לעומס (scaling) מוצגים באמצעות שלוש קריאות נפרדות UpdatePageElementTransformRequest, אבל יעיל יותר לחשב מראש את המכפלה של הטרנספורמציה הזאת ולאחר מכן מחילים את המכפלה כבקשה אחת.

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

זה פרוטוקול הבקשה לשינוי גודל של רכיב:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
          "objectId": PAGE_ELEMENT_ID,
          "applyMode": "RELATIVE",
          "transform": {
              "scaleX":  1,
              "scaleY":  1,
              "translateX": -2000000 - 0.5 * 0.3  * 3000000,
              "translateY":  -550000 - 0.5 * 0.12 * 3000000,
              "unit": "EMU"
          }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": 1.5,
            "scaleY": 0.8,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}

סיבוב רכיב סביב המרכז שלו

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

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

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

זה פרוטוקול הבקשה לרוטציה של רכיב לגבי המרכז:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
          "objectId": PAGE_ELEMENT_ID,
          "applyMode": "RELATIVE",
          "transform": {
              "scaleX":  1,
              "scaleY":  1,
              "translateX": -2000000 - 0.5 * 0.3  * 3000000,
              "translateY":  -550000 - 0.5 * 0.12 * 3000000,
              "unit": "EMU"
          }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  cos(35 * (pi/180)),
            "scaleY":  cos(35 * (pi/180)),
            "shearX":  sin(35 * (pi/180)),
            "shearY": -sin(35 * (pi/180)),
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}