質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

2050閲覧

GAS htmlserviceでdriveに画像をアップロードすると破損?してしまいます。

tajimaru

総合スコア7

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2020/03/08 07:06

前提・実現したいこと

GASをウェブアプリケーションとして公開し、htmlserviceで表示したページからファイル選択しgoogle driveに画像をアップロードしたいです。

発生している問題・エラーメッセージ

データ自体はアップロードされるものの、drive内の画像は破損してしまっているのか表示できませんでした。

goodle driveで開いた際のエラーメッセージ プレビューできません。 windows10のペイントで開いた際のエラーメッセージ このファイルは読み取れません。 このビットマップファイルは無効であるか、または現在サポートされていない形式です。

該当のソースコード

gs

1function doGet() { 2 return HtmlService.createHtmlOutputFromFile('index'); 3} 4 5function processForm(formObject) { 6 var formBlob = formObject.myFile; 7 const folderID='xxxxxxxxxxxxxxxxxxxxxxxx'; 8 var uploadFolder = DriveApp.getFolderById(folderID); 9 var driveFile = uploadFolder.createFile(formBlob);//アップロード 10 return driveFile.getUrl(); 11}

html

1<!DOCTYPE html> 2<html> 3 <head> 4 <base target="_top"> 5 <script> 6 // Prevent forms from submitting. 7 function preventFormSubmit() { 8 var forms = document.querySelectorAll('form'); 9 for (var i = 0; i < forms.length; i++) { 10 forms[i].addEventListener('submit', function(event) { 11 event.preventDefault(); 12 }); 13 } 14 } 15 window.addEventListener('load', preventFormSubmit); 16 17 function handleFormSubmit(formObject) { 18 google.script.run.withSuccessHandler(updateUrl).processForm(formObject); 19 } 20 function updateUrl(url) { 21 var div = document.getElementById('output'); 22 div.innerHTML = '<a href="' + url + '">Got it!</a>'; 23 } 24 </script> 25 </head> 26 <body> 27 <form id="myForm" onsubmit="handleFormSubmit(this)"> 28 <input name="myFile" type="file" /> 29 <input type="submit" value="Submit" /> 30 </form> 31 <div id="output"></div> 32 </body> 33</html> 34

試したこと

試した画像の形式はjpg gif png bmpで、すべて同様の症状です。
ダウンロードして開こうとしてもエラーとなりました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

回答1

0

ベストアンサー

このバグにヒットしている可能性があります。
こちらではテキストファイルはアップロードできることを確認していますが、バグトラッカーでは xml,image,html でアップロードが正常に行えないとの報告があります。
ファイルサイズも変化しており、内部的な修正をしないとアップロードできないと思われます(ユーザの対処は困難だし、本質的でない)。

対処として、実行メニューから「Chrome V8 を搭載した新しい Apps Script ランタイムを無効化する」をクリックしてください。

少なくとも png について、上記で正常にアップロードできるようになったことを動作確認しています。

投稿2020/03/09 13:33

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tajimaru

2020/03/09 18:15

>対処として、実行メニューから「Chrome V8 を搭載した新しい Apps Script ランタイムを無効化する」をクリックしてください。 上記手順で問題解決しました。バグが修正されるまではこれで対処しようと思います。大変助かりました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問