-
Notifications
You must be signed in to change notification settings - Fork 1.9k
/
Copy pathdrive.js
138 lines (115 loc) · 3.15 KB
/
drive.js
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*
Copyright 2024 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/**
* Renames a file based on user selection / updates card.
*
* @param {!Event} e Add-on event context
* @return {!Card}
*/
function renameFile(e) {
const newName = e.formInput.names
const id = e.drive.activeCursorItem.id
DriveApp.getFileById(id).setName(newName)
const eUpdated =
{
hostApp: 'drive',
drive:
{
selectedItems: [[Object]],
activeCursorItem:
{
title: newName,
id: id,
iconUrl: e.drive.activeCursorItem.iconUrl,
mimeType: e.drive.activeCursorItem.mimeType
},
commonEventObject: { hostApp: 'DRIVE', platform: 'WEB' },
clientPlatform: 'web'
}
}
return onCardUpdate(eUpdated)
}
/**
* Redraws the same card to force AI to refresh its data.
*
* @param {!Event} e Add-on event context
* @return {!Card}
*/
function updateCard(e) {
const id = e.drive.activeCursorItem.id
const eConverted =
{
hostApp: 'drive',
drive:
{
selectedItems: [[Object]],
activeCursorItem:
{
title: DriveApp.getFileById(id).getName(),
id: id,
iconUrl: e.drive.activeCursorItem.iconUrl,
mimeType: e.drive.activeCursorItem.mimeType
},
commonEventObject: { hostApp: 'DRIVE', platform: 'WEB' },
clientPlatform: 'web'
}
}
return onCardUpdate(eConverted)
}
/**
* Fetches the body of given document, using DocumentApp.
*
* @param {string} id The Google Document file ID.
* @return {string} The body of the Google Document.
*/
function getDocumentBody(id) {
var doc = DocumentApp.openById(id);
var body = doc.getBody();
var text = body.getText();
return text;
}
/**
* Fetches the body of given document, using DocsApi.
*
* @param {string} id The Google Document file ID.
* @return {string} The body of the Google Document.
*/
function getDocAPIBody(id) {
// Call DOC API REST endpoint to get the file
let url = `https://docs.googleapis.com/v1/documents/${id}`;
var response = UrlFetchApp.fetch(url, {
method: 'GET',
headers: {
Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
},
muteHttpExceptions: true
});
if (response.getResponseCode() !== 200) {
throw new Error(`Drive API returned error \
${response.getResponseCode()} :\
${response.getContentText()}`);
}
let file = response.getContentText();
let data = JSON.parse(file);
return data.body.content;
}
/**
* Sends the given document to the trash folder.
*
* @param {!Event} e Add-on event context
*/
function moveFileToTrash(e) {
const id = e.drive.activeCursorItem.id
const file = DriveApp.getFileById(id);
file.setTrashed(true);
}