接續「Gg / Google Drive 移動副本文件到特定資料夾 2」
本篇說明主程式 getDatafromSheet()執行的內容
處理了從試算表取得的欄位資料
並且依照G欄或H欄的資料來分別執行不同的子程式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
function getDatafromSheet() { //https://docs.google.com/spreadsheets/d/***************************************/ //113-修訂版學習扶助師資研習課程講師培訓課程-課後作業 (回覆) var ss = SpreadsheetApp.openById("***************************************"); var sOne = ss.getSheets()[2];//工作表-作業處理 //Logger.log(sOne.getName()); var r = sOne.getLastRow(); //var r = 3 //Logger.log(r); for (var i = 2; i <= r; i++) { //Logger.log(i); var checkDo = sOne.getRange(i, 9).getValue(); if (checkDo === "") { var rName = sOne.getRange(i, 3).getValue();//姓名 //Logger.log(rName); var rCity = sOne.getRange(i, 5).getValue();//服務縣市 //Logger.log(rCity); var rSub = sOne.getRange(i, 6).getValue();//繳交作業科目 //Logger.log(rSub); var rFiles = sOne.getRange(i, 7).getValue();//課後作業上傳 var rFilesArr = rFiles.toString().split(","); //Logger.log(rFilesArr.length); var rDriUrl = sOne.getRange(i, 8).getValue();//雲端資料夾網址 //Logger.log(rDriUrl); //var resultMoveFile = test(); //Logger.log(resultMoveFile); if (rFiles == "" && rDriUrl != "") { var reustMg = copyDriUrl(i, rName, rCity, rSub, rDriUrl); } else { var reustMg = copyFileToFolder(i, rName, rCity, rSub, rFilesArr); } //Logger.log(reustMg); if (reustMg[0] === "good") { sOne.getRange(i, 9).setValue("◎"); sOne.getRange(i, 10).setValue("https://drive.google.com/drive/folders/" + reustMg[1]); } else if (reustMg[0] === "bad") { sOne.getRange(i, 11).setValue(reustMg[1]); } //if reustMg } else { Logger.log("已執行過"); } // if checkDo } //for i } |
#4-9
取得表單回應試算表的資料,不過為了不改動原始資料
新增了一個工作表,半自動的流程將資料複製到這個工作表
並且新增了幾個欄位
#13-52
利用工作表的筆數進行迴圈逐一處理
#15-49
透過I欄是否為空,來判斷有無執行過
如果不為空,就跳過不執行
如果為空,則執行程式
#17-26
取得工作表上的儲存格資料
由於G欄可能不只一筆資料,所以用split函數以”,”來分割資料
#31-35
因為上傳者可以直接上傳檔案,或者提供雲端資料夾連結
如果是直接上傳檔案,G欄會有資料
如果是提供雲端資料夾連結,H欄會有資料
正常情況,兩者只有一個欄位會有資料
因此除了只有G欄沒有資料且H欄有資料,執行 copyDriUrl()
其餘情況都是執行 copyFileToFolder()
#39-44
透過回傳資料來判斷執行情況
如果是”bad”表示程式出錯,在K欄寫出錯誤訊息
這邊的設計是假定只有 copyDriUrl()可能會出錯
因為預想的情況是上傳者會提供雲端資料夾連結
但也有可能只有一個檔案,所以可能會提供檔案連結
這樣的情況,程式就會出錯
但如果是收到”good”表示執行過程沒有出錯
會在I欄寫入”◎”,這樣之後再執行程式時就會跳過