DriveApp

雲端硬碟API

讀取雲端資料夾檔案

GAS

function getImageUrl(fileName) {

  var folder = DriveApp.getFolderById(folderId);

  var files = folder.getFilesByName(fileName); //依檔名建立檔案物件

  if (files.hasNext()) { //判斷檔案是否存在

    var file = files.next(); //取得檔案物件

    return file.getDownloadUrl();

  }

  return '圖片未找到';

}

儲存檔案

慢速版

html

<form>

  <input type="file" name="myFile" mulitple>

  <input type="submit" value="上傳檔案01"

    onclick="this.value='檔案01上傳中……';

    google.script.run.withSuccessHandler(fileUploaded)

          .uploadFiles(this.parentNode);

           return false;">

  <label id="resp"></label>

</form>

GAS

var folder = DriveApp.getFolderById("FolderId"); //建立雲端資料夾物件

function uploadFiles(uploadFile)

{

 var file = uploadFile.myFile; //建立上傳檔案物件(含名稱)

 var createFile = folder.createFile(file); //在雲端資料夾儲存檔案物件

 return createFile.getName(); //回傳已儲存檔案名稱

}

快速版

html

<!-- 快速上傳版本 -->

<input name="file[]" id="files" type="file" multiple>

<input type='button' value='Upload 照片' onclick='getFiles()'>

<label id="resultMessage"></label>

<script>

  function getFiles() {

    const f = document.getElementById('files');

    document.getElementById("resultMessage").innerHTML = "上傳中...";

    [...f.files].forEach((file, i) => {

        const fileSizeInBytes = file.size;

        const maxFileSizeInBytes = 5 * 1024 * 1024; // 5 MB (you can adjust the size as needed)

        if (fileSizeInBytes <= maxFileSizeInBytes) {

          const fr = new FileReader();

          const loginId = document.getElementById("id-card").textContent;

          fr.onload = (e) => {

            const data = e.target.result.split(",");

            const obj = {fileName: f.files[i].name, mimeType: data[0].match(/:(\w.+);/)[1], data: data[1]};

            google.script.run.withSuccessHandler((fileInfo) => {

              var fileName = fileInfo.fileName;

              document.getElementById("resultMessage").innerHTML = "已上傳檔案:" + fileName;

              var photo = document.getElementById("photo");

              photo.src = fileInfo.fileUrl;

            }).saveFile(obj, loginId);

                  }

                  fr.readAsDataURL(file);

                } else {

                  document.getElementById("resultMessage").innerHTML = "檔案大小超過限制。請選擇小於 5MB 的檔案。";

          }

    });

  }

</script>

GAS

function saveFile(obj, loginId) { //檔案、登入帳號

  var blob = Utilities.newBlob(Utilities.base64Decode(obj.data), obj.mimeType, obj.fileName);

  var folder = DriveApp.getFolderById(folderId); //Allen added

  var now = new Date();

  var fileName = loginId + "_" + obj.fileName;

  var file = folder.createFile(blob);

  file.setName(fileName);

  var fileInfo = {

    fileId: file.getId(),

    fileName: fileName,

    fileUrl: file.getDownloadUrl()

  };

  return fileInfo;

}