Skip to content

Commit cba0d34

Browse files
author
Hideaki Matsunami
committed
科目-教員一覧をcloneした
スクリプトIDは削除(念のため)
1 parent 67eba2c commit cba0d34

File tree

4 files changed

+275
-0
lines changed

4 files changed

+275
-0
lines changed

teachers/.clasp.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"scriptId":""}

teachers/appsscript.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"timeZone": "Asia/Tokyo",
3+
"dependencies": {
4+
},
5+
"exceptionLogging": "STACKDRIVER",
6+
"runtimeVersion": "V8"
7+
}

teachers/license.js

Lines changed: 127 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

teachers/コード.js

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
/*
2+
Copyright (c) 2020 University of Fukui. All rights reserved.
3+
Please see the license.gs for the copyright licensing conditions attached to this codebase, including copies of the licenses concerned.
4+
*/
5+
6+
var logsheet = SpreadsheetApp.getActive().getSheetByName("log");
7+
var url = PropertiesService.getScriptProperties().getProperty('root_folder_url');
8+
9+
function onOpen() {
10+
SpreadsheetApp
11+
.getActiveSpreadsheet()
12+
.addMenu('カスタムメニュー', [
13+
{name: '連携する', functionName: 'setProperties'},
14+
{name: '編集権限登録', functionName: 'main'}
15+
]);
16+
}
17+
18+
function setProperties() {
19+
var rootFolderUrl = Browser.inputBox('ルートフォルダのURLを入力してください。');
20+
PropertiesService.getScriptProperties().setProperty('root_folder_url', rootFolderUrl);
21+
}
22+
23+
function main(){
24+
var date = new Date();
25+
logsheet.appendRow([Utilities.formatDate( date, 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss'), "start"]);
26+
27+
var ss = SpreadsheetApp.getActive();
28+
var editortable = ss.getSheetByName("担当教員一覧").getDataRange().getValues();
29+
var IDsheet = ss.getSheetByName("対象科目ID");
30+
var rootfolder;
31+
try{
32+
rootfolder = DriveApp.getFolderById(url.match(/[^/]+$/g)[0]);
33+
}catch(e){
34+
Browser.msgBox("初期設定シートにルートフォルダURLを記載ください");
35+
return;
36+
}
37+
38+
for(var i = editortable.length-1; 0 < i; i--){
39+
var err = false;
40+
41+
if(editortable[i][3] != ""){
42+
continue;
43+
}
44+
if(editortable[i][2] == ""){
45+
continue;
46+
}
47+
48+
var grade = editortable[i][0];
49+
var subject = editortable[i][1];
50+
51+
var gradefolders = rootfolder.getFoldersByName(grade + "年生");
52+
var gradefolder;
53+
if(gradefolders.hasNext()){
54+
gradefolder = gradefolders.next();
55+
}else{
56+
Browser.msgBox("正しい学年を入力してください");
57+
return;
58+
}
59+
60+
var studentfolders = gradefolder.getFoldersByName("学生");
61+
var studentfolder;
62+
if(studentfolders.hasNext()){
63+
studentfolder = studentfolders.next();
64+
}else{
65+
Browser.msgBox("学年フォルダ配下が想定しているフォルダ構造ではありません");
66+
return;
67+
}
68+
69+
var teacherfolders = gradefolder.getFoldersByName("教員");
70+
var teacherfolder;
71+
if(teacherfolders.hasNext()){
72+
teacherfolder = teacherfolders.next()
73+
}else{
74+
Browser.msgBox("学年フォルダ配下が想定しているフォルダ構造ではありません");
75+
return;
76+
}
77+
78+
var subjectfolders = studentfolder.getFoldersByName(subject);
79+
var subjectfolder;
80+
if(subjectfolders.hasNext()){
81+
subjectfolder = subjectfolders.next();
82+
}else{
83+
Browser.msgBox("正しい科目名を入力してください");
84+
return;
85+
}
86+
87+
var minutepaperfolders = teacherfolder.getFoldersByName(subject);
88+
var minutepaperfolder;
89+
90+
if(minutepaperfolders.hasNext()){
91+
minutepaperfolder = minutepaperfolders.next()
92+
}else{
93+
Browser.msgBox("正しい科目名を入力してください");
94+
return;
95+
}
96+
97+
try {
98+
Drive.Permissions.insert({
99+
'role': 'writer',
100+
'type': 'user',
101+
'value': editortable[i][2]
102+
}, subjectfolder.getId(), {
103+
'sendNotificationEmails': 'false'
104+
});
105+
logsheet.appendRow(["suc", subjectfolder.getId(), editortable[i][2]]);
106+
107+
}
108+
catch (e) {
109+
logsheet.appendRow(["err", subjectfolder.getId(), editortable[i][2]]);
110+
err = true;
111+
}
112+
113+
try {
114+
Drive.Permissions.insert({
115+
'role': 'writer',
116+
'type': 'user',
117+
'value': editortable[i][2]
118+
}, minutepaperfolder.getId(), {
119+
'sendNotificationEmails': 'false'
120+
});
121+
logsheet.appendRow(["suc", minutepaperfolder.getId(), editortable[i][2]]);
122+
123+
}
124+
catch (e) {
125+
logsheet.appendRow(["err", minutepaperfolder.getId(), editortable[i][2]]);
126+
err = true;
127+
}
128+
129+
if(err){
130+
ss.getSheetByName("担当教員一覧").getRange(i+1, 4).setValue("NG");
131+
}else{
132+
ss.getSheetByName("担当教員一覧").getRange(i+1, 4).setValue("OK");
133+
}
134+
}
135+
136+
var date = new Date();
137+
logsheet.appendRow([Utilities.formatDate( date, 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss'), "end"]);
138+
SpreadsheetApp.flush();
139+
140+
}

0 commit comments

Comments
 (0)