Gg / Google Drive 移動副本文件到特定資料夾 3

接續「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欄寫入”◎”,這樣之後再執行程式時就會跳過