以下介紹如何 Google 雲端硬碟空間作檔案上傳。
在 Google 雲端硬碟上新增 Google script。
以下程式碼輸入至 code.gs 。
function doGet(e) { return HtmlService.createTemplateFromFile('form').evaluate() .setTitle('上傳系統'); } function include(filename) { return HtmlService.createHtmlOutputFromFile(filename).getContent(); } function uploadFiles(form) { try { //---請將「檔案上傳」修改為要存放的資料夾名稱---- var sheetName = "檔案上傳列表"; var foldername = "檔案上傳"; //---------------------------------------------- var folder, folders; //尋找指定資料夾,資料夾不存在則建立指定名稱資料夾 folders = DriveApp.getFoldersByName(foldername); if (folders.hasNext()) { folder = folders.next(); } else { folder = DriveApp.createFolder(foldername); } //處理檔案與設定檔案屬性 var blob = form.uploadFile; var file = folder.createFile(blob); file.setDescription("上傳者: " + form.id + " - " + form.phone + " - " + form.email); //取得檔案連結與名稱 var fileUrl = file.getUrl(); var fileName = file.getName(); //尋找雲端硬碟是否有這個檔案 var FileIterator = DriveApp.getFilesByName(sheetName); var sheetApp = ""; while (FileIterator.hasNext()) { var sheetFile = FileIterator.next(); if (sheetFile.getName() == sheetName) { //如果資料表存在就把它打開 sheetApp = SpreadsheetApp.open(sheetFile); } } //如果沒有就建立一個新的 if(sheetApp == "") { //建立雲端試算表記錄上傳者資料與檔案 sheetApp = SpreadsheetApp.create(sheetName); //設定第一行項目名稱 sheetApp.getSheets()[0].getRange(1, 1, 1, 6).setValues([["上傳時間","姓名","電話","Email","檔案名稱","檔案網址"]]); } // 讀取第一個sheets找到最後一行 var sheet = sheetApp.getSheets()[0]; var lastRow = sheet.getLastRow(); // 寫入新的資料 var targetRange = sheet.getRange(lastRow+1, 1, 1, 6).setValues([[new Date().toLocaleString(),form.id,form.phone,form.email,fileName,fileUrl]]); return "檔案上傳成功!" } catch (error) { return "檔案上傳失敗! 原因:"+error.toString(); } }以下程式碼輸入至 form.html。
<?!= include('script.js'); ?> <?!= include('style.css'); ?> <div id="layout"> <h1> Google 檔案上傳系統 </h1> <form id="upload"> 請輸入你的姓名:<input type="text" name="id" placeholder="姓名" tabindex="1" required autofocus> 請輸入你的手機電話:<input type="text" name="phone" placeholder="電話" tabindex="2" required> 請輸入你的Email:<input type="text" name="email" placeholder="電子郵件" tabindex="3" required> <input type="file" name="uploadFile"> <input type="submit" value="上傳作業" onclick="this.value='上傳中...'; google.script.run.withSuccessHandler(fileUploaded) .uploadFiles(this.parentNode); return false;"> </form> <div id="output"></div> </div>以下程式碼輸入至 style.css.html。
<style> #layout{ margin: 0px auto; text-align: center; border: 2px solid #FF0000; width: 520px; height: 420px; } input{ display:block; margin: 20px auto; font-size:16px; width:400px; } </style>以下程式碼輸入至 script.js.html。
<script> function fileUploaded(status) { document.getElementById('upload').style.display = 'none'; document.getElementById('output').innerHTML = status; } </script>部署為網路應用程式。
核對權限。
選擇帳號。
點選進階。
前往驗證。
程式執行權限「允許」。
完成部署應用程式。
準備上傳檔案的內容。
輸入上傳者的資料。
等待檔案上傳。
完成上傳。
到雲端硬碟中找到檔案上傳列表查詢。
在檔案上傳資料夾中預覽剛剛上傳的檔案內容。
到此完成上傳Google雲端空間的製作。
參考資料:
- 雲端硬碟上傳檔案及表單記錄
- 在 Google Drive 中复制文件夹
- HTML Service Examples for Google Scripts
- 讓學生直接上傳檔案到老師的Google雲端硬碟
- 免費&簡單!模擬面試用「備審資料上傳系統」製作教學
- 如何建立可以上傳檔案的Google表單 (How to create a file upload form with google script)
- 使用Google App Script讓學生可以不用登入,就能直接上傳檔案到老師的Google雲端硬碟
- Google雲端硬碟開放「匿名上傳」加強版,一次開放上傳兩個檔案(Google Apps Script應用服務指令碼)
- File upload using doPost on Google Web Apps