質問編集履歴

1

解決された原因の追加、最終chord追加

2019/10/23 07:00

投稿

s.kono
s.kono

スコア37

test CHANGED
File without changes
test CHANGED
@@ -143,3 +143,171 @@
143
143
 
144
144
 
145
145
  ```
146
+
147
+ **結論としては**
148
+
149
+ エラーはchordによるエラーではなく、環境回りの設定がうまくいっていなかったということでした。
150
+
151
+ 最終的にはマイドライブに保存された画像ファイルを元スライドにあるフォルダに移動する部分も追加した次のコードでうまく動いています。
152
+
153
+
154
+
155
+ **不要だったもの**
156
+
157
+ - OAuth2ライブラリの追加
158
+
159
+ - Google Slides API
160
+
161
+
162
+
163
+ ```Google Apps Script
164
+
165
+ /* 参考サイト
166
+
167
+ https://medium.com/@gw_cule/gas%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E8%AA%8D%E5%8F%AF%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-67f195d7a425
168
+
169
+ https://codeday.me/jp/qa/20190305/364927.html
170
+
171
+ */
172
+
173
+ function main(){
174
+
175
+ var id=PropertiesService.getScriptProperties().getProperty('slide_id');
176
+
177
+ var folderid=PropertiesService.getScriptProperties().getProperty('folder_id');
178
+
179
+ downloadPresentation(id,folderid)
180
+
181
+ }
182
+
183
+
184
+
185
+ function downloadPresentation(id,folderid) {
186
+
187
+ var slideIds = getSlideIds(id);
188
+
189
+
190
+
191
+ for (var i = 0, slideId; slideId = slideIds[i]; i++) {
192
+
193
+ var file = downloadSlide('Slide ' + (i + 1), id, slideId);
194
+
195
+ moveSlides(file,folderid);
196
+
197
+ }
198
+
199
+ }
200
+
201
+
202
+
203
+ function downloadSlide(name, presentationId, slideId) {
204
+
205
+
206
+
207
+ var url = 'https://docs.google.com/presentation/d/' + presentationId +
208
+
209
+ '/export/png?id=' + presentationId + '&pageid=' + slideId;
210
+
211
+ var options = {
212
+
213
+ "muteHttpExceptions" : true,  //エラー捕捉
214
+
215
+ headers: {
216
+
217
+ Authorization: 'Bearer ' + ScriptApp.getOAuthToken()
218
+
219
+ }
220
+
221
+ };
222
+
223
+ try {
224
+
225
+ //成功時
226
+
227
+ var response = UrlFetchApp.fetch(url, options);
228
+
229
+ var image = response.getAs(MimeType.PNG);
230
+
231
+ image.setName(name);
232
+
233
+ var file=DriveApp.createFile(image);
234
+
235
+ return file;
236
+
237
+ } catch(e) {
238
+
239
+ //エラー時
240
+
241
+ Logger.log(e.message);
242
+
243
+ }
244
+
245
+
246
+
247
+ }
248
+
249
+
250
+
251
+ function getSlideIds(presentationId) {
252
+
253
+
254
+
255
+ var url = 'https://slides.googleapis.com/v1/presentations/' + presentationId;
256
+
257
+ var options = {
258
+
259
+ "muteHttpExceptions" : true, //エラー捕捉
260
+
261
+ headers: {
262
+
263
+ Authorization: 'Bearer ' + ScriptApp.getOAuthToken()
264
+
265
+ }
266
+
267
+ };
268
+
269
+ try{
270
+
271
+ var response = UrlFetchApp.fetch(url, options);
272
+
273
+ } catch(e) {
274
+
275
+ //エラー時
276
+
277
+ Logger.log(e.message);
278
+
279
+ }
280
+
281
+ var slideData = JSON.parse(response);
282
+
283
+ return slideData.slides.map(function(slide) {
284
+
285
+ return slide.objectId;
286
+
287
+ });
288
+
289
+
290
+
291
+ }
292
+
293
+
294
+
295
+ function moveSlides(file,folderid){
296
+
297
+
298
+
299
+ var folder = DriveApp.getFolderById(folderid);
300
+
301
+ file.makeCopy(file.getName(),folder);//ルート(マイドライブ直下)に作られた画像ファイルをコピーする
302
+
303
+ Logger.log(file.getName() + ": this file delete");
304
+
305
+ file.setTrashed(true);
306
+
307
+
308
+
309
+ }
310
+
311
+
312
+
313
+ ```