Site icon 中小學資訊人員根本不算MIS

Google App Script操作筆記

前陣子找了Google App Script把NAS單向同步造成的空資料夾刪掉。然後碰到要分班建成績單表格還要改檔名又要貼學生名單上去。原本都手動做一做就好,但想想這東西應該也可以用Google App Script去處理吧。然後就動手了。

這邊只講幾個基本操作。

先講個複製資料貼去別的試算表的功能。

var source = DriveApp.getFileById("資料來源的試算表網址上面的ID");
var data = SpreadsheetApp.open(target).getSheets()[0].getRange("A1:Z99").getValues();
SpreadsheetApp.openById("要貼上的試算表網址上面的ID").getSheets()[0].getRange("A1:Z99").setValues(data);

我這邊用了先用DriveApp針對檔案ID取得檔案後,再用SpreadsheetApp開起來;還有直接用SpreadsheetApp直接開試算表ID開兩種方式。先用DriveApp開的好處是你如果要做其他操作就不用一直貼ID啦。像是下面如果要修改檔名就直接抓來用就好。

source.setName("檔案名稱");

如果需要排序或是移除重複項目的話就這樣,下面是針對第一欄跟第二欄做排序跟清除重複資料的方式

source.getSheets()[0].getRange("A1:Z99").sort([1,2]);
source.getSheets()[0].getRange("A1:Z99").removeDuplicates([1,2]);

如果想針對某個資料夾內的檔案一起做處理可以這樣

rootFolder = DriveApp.getFolderById("資料夾ID");
var Files = rootFolder.getFiles();
while (Files.hasNext()) {
	var File = Files.next();
	console.log(File.getName());
}

如果需要從外部取得JSON資料

var target = DriveApp.getFileById("試算表ID");
var response = UrlFetchApp.fetch("JSON網址");
var data = JSON.parse(response.getContentText());
const callback = (item,index) => {
	console.log(index + " " + data[index]);
}
data.forEach(callback);
Exit mobile version