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;
}