-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSpreadsheet.gs
72 lines (63 loc) · 2.26 KB
/
Spreadsheet.gs
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//////////////////////////////////////////////////////////
// Spreadsheet code //
//////////////////////////////////////////////////////////
class Spreadsheet {
////////////////////////////////////////////////////////////
// Constructor
////////////////////////////////////////////////////////////
constructor(spreadsheetId) {
this.spreadsheetId = spreadsheetId;
}
////////////////////////////////////////////////////////////
// Returns as a list [email, score]
////////////////////////////////////////////////////////////
getGrades(sheetName) {
const ss = SpreadsheetApp.openById(this.spreadsheetId);
const sheet = ss.getSheetByName(sheetName);
try{
// const range = sheet.getRange(2,1,sheet.getLastRow()-1,3); // <<< Original
const range = sheet.getRange(2,2,sheet.getLastRow()-1,2);
const values = range.getValues();
return values;
} catch(e) {
return "";
}
}
getSheetNames() {
return Sheets.Spreadsheets.get(this.spreadsheetId).sheets.map(sheet => {return `${sheet.properties.title}:${sheet.properties.sheetId}`;})
}
getSheetId(sheetName) {
var sheetNames = this.getSheetNames();
for (var i in sheetNames){
var tmp = sheetNames[i].split(":");
if (tmp[0] == sheetName){
return tmp[1];
}
}
}
updateSheet(values, sheetName){
var resource = {
"majorDimension": "ROWS",
"values": values
}
var range = this.getRange(values, sheetName);
Sheets.Spreadsheets.Values.update(resource, this.spreadsheetId, range, {valueInputOption: "RAW"});
}
getRange(values, sheetName) {
var no_of_rows = values.length;
var no_of_columns = values[0].length;
Logger.log(no_of_rows);
Logger.log(no_of_columns);
return (sheetName + "!A1:" + String.fromCharCode(64+no_of_columns) + no_of_rows.toString());
}
toGridRange(range){
var myRegexp = /(?:^|\s)(.*?)!([A-Z])\d*:([A-Z])\d*(?:\s|$)/g;
var match = myRegexp.exec(range);
var gridRange = {
"sheetId": this.getSheetId(match[1]),
"startColumnIndex": match[2].charCodeAt(0)-64,
"endColumnIndex": match[3].charCodeAt(0)-64
}
return gridRange;
}
}