Google Apps Script(GAS)を使ったEXCELファイルアップロードで、ファイル破損してしまう不具合
表題について、質問させて頂きます。よろしくお願い致します。
Google Apps Script(GAS)を使って、Google DriveにEXCELファイルをアップロードし共有しようと考えています。
発生している問題
下記のQiitaサイトを引用し、無事アップロードができましたが、アップロードしたファイルをが破損してしまい、EXCELで読み込めません。
https://qiita.com/v2okimochi/items/06ed1ce7c56a877a1e10
*拡張子 xlsx xls の両方を試しましたが、同じ状態です。
*手動でアップロードしたファイルは、完了した時点でシートの枠組みが見えますが、GASでアップロードしたファイルには緑色のXの表示が出るだけですので、アップロードした時点で壊れているようです。
1 2//コード.gs 3 4function doGet() { 5 return HtmlService.createHtmlOutputFromFile('index'); 6} 7 8function processForm(formObject) { 9 var formBlob = formObject.myFile; 10 const folderID='フォルダのID(参考文献[5]参照)'; 11 var uploadFolder = DriveApp.getFolderById(folderID); 12 var driveFile = uploadFolder.createFile(formBlob);//アップロード 13 return driveFile.getUrl(); 14} 15 16 17index.html 18 19<!DOCTYPE html> 20<html> 21 <head> 22 <base target="_top"> 23 <script> 24 function preventFormSubmit() { 25 var forms = document.querySelectorAll('form'); 26 for (var i = 0; i < forms.length; i++) { 27 forms[i].addEventListener('submit', function(event) { 28 event.preventDefault(); 29 }); 30 } 31 } 32 window.addEventListener('load', preventFormSubmit); 33 /*最初はアップロードボタンを押せないようにしておく*/ 34 document.addEventListener("DOMContentLoaded", function () { 35 document.getElementById("upload").disabled = true; 36 }, false); 37 /*制限サイズ以内のファイルが選択されたらアップロードボタンを押せるようにする*/ 38 function changeSubmitButton() { 39 const len=document.getElementById("file").files.length; 40 const size=document.getElementById("file").files[0].size; 41 const maxSize=1024 * 1024 * 10;//10MB 42 const uploadButton=document.getElementById("upload"); 43 if (len > 0 && size < maxSize) { 44 uploadButton.disabled = false; 45 } 46 else{ 47 uploadButton.disabled = true; 48 } 49 } 50 /*アップロードボタンが押されたらファイルをアップロード*/ 51 function handleFormSubmit(formObject) { 52 document.getElementById("upload").disabled = true; 53 const div = document.getElementById('progress'); 54 div.innerHTML='アップロード中...'; 55 //アップロード成功した場合はupdateView()実行 56 google.script.run.withSuccessHandler(updateView).processForm(formObject); 57 } 58 /*アップロード完了画面に変える(動的)*/ 59 function updateView() { 60 var div = document.getElementById('myform'); 61 div.innerHTML = '<div>アップロード完了しました。ありがとうございます</div>'; 62 } 63 </script> 64 </head> 65 <body> 66 <div id="myform" style="text-align:center;"> 67 ファイルを選択してからアップロードしてください(10MBまで)<br><br> 68 <form onsubmit="handleFormSubmit(this)"> 69 <input id="file" name="myFile" type="file" onchange="changeSubmitButton()" /> 70 <input id="upload" type="submit" value="アップロード" /> 71 </form> 72 <div id="progress"></div> 73 </div> 74 </body> 75</html> 76
MIMEの問題かと思います下記のサイトを見つけましたが、コード.gs のvar formBlob = formObject.myFile; 辺りをいじってみましたが、うまくいきません。
https://developers.google.com/apps-script/reference/base/mime-type
どなたかご教授頂ければ幸いです。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/19 14:23
2020/06/20 03:55 編集
2020/06/20 15:10
2020/06/21 09:42