-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathpresentation_create.go
89 lines (76 loc) · 2.47 KB
/
presentation_create.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package slidesutil
import (
"fmt"
"net/http"
"github.com/grokify/mogo/errors/errorsutil"
slides "google.golang.org/api/slides/v1"
)
// CreatePresentation Creates a new presentation with
// filename, title and subtitle.
func CreatePresentation(srv *slides.Service, psv *slides.PresentationsService,
filename, titleText, subtitleText string) (string, error) {
pres := &slides.Presentation{Title: filename}
rsp1, err := psv.Create(pres).Do()
if err != nil {
return "", err
}
presentationID := rsp1.PresentationId
titleSlide := rsp1.Slides[0]
titleID := titleSlide.PageElements[0].ObjectId
subtitleID := titleSlide.PageElements[1].ObjectId
reqs := []*slides.Request{}
if len(titleText) > 0 {
reqs = append(reqs, InsertTextRequest(titleID, titleText))
}
if len(subtitleText) > 0 {
reqs = append(reqs, InsertTextRequest(subtitleID, subtitleText))
}
if len(reqs) > 0 {
_, err := psv.BatchUpdate(
presentationID,
&slides.BatchUpdatePresentationRequest{Requests: reqs}).Do()
if err != nil {
return presentationID, err
}
}
return presentationID, nil
}
func CreateEmptyPresentation(psv *slides.PresentationsService, filename string) (string, error) {
pres := &slides.Presentation{Title: filename}
res, err := psv.Create(pres).Do()
if err != nil {
return "", errorsutil.Wrap(err, "CreateRoadmapSlide - psv.Create(pres).Do()")
}
fmt.Printf("CREATED Presentation with Id %v\n", res.PresentationId)
if 1 == 0 {
for i, slide := range res.Slides {
fmt.Printf("- Slide #%d id %v contains %d elements.\n", (i + 1),
slide.ObjectId,
len(slide.PageElements))
}
}
pageId := res.Slides[0].ObjectId
requests := []*slides.Request{
{
DeleteObject: &slides.DeleteObjectRequest{ObjectId: pageId},
},
}
breq := &slides.BatchUpdatePresentationRequest{
Requests: requests,
}
_, err = psv.BatchUpdate(res.PresentationId, breq).Do() // resu
if err != nil {
return "", errorsutil.Wrap(err, "CreateRoadmapSlide - psv.BatchUpdate(res.PresentationId, breq).Do()")
}
return res.PresentationId, nil
}
func CreateEmptyPresentationGSS(gss *GoogleSlidesService, filename string) (string, error) {
return CreateEmptyPresentation(gss.PresentationsService, filename)
}
func CreateEmptyPresentationHTTP(googleClient *http.Client, filename string) (string, error) {
gss, err := NewGoogleSlidesService(googleClient)
if err != nil {
return "", errorsutil.Wrap(err, "CreateRoadmapSlide - slidesutil.NewGoogleSlidesService()")
}
return CreateEmptyPresentationGSS(gss, filename)
}