-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpostappsscript.js
149 lines (131 loc) · 3.84 KB
/
postappsscript.js
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
function checkPassword(pwd){
if (pwd == 'yourpassword')
return true;
else
return false;
}
function submitHandler() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var lastRowIndex = sheet.getLastRow();
var submitNum = getTotalSubmitTimesRange().getValue();
var passwordRange = getPasswordRange(sheet, lastRowIndex)
var password = passwordRange.getValue();
if (!checkPassword(password)){
sheet.deleteRow(lastRowIndex);
return ;
}
// clean the password
passwordRange.clear();
// check add new post or edit post
var postIdRange = getPostIdRange(sheet, lastRowIndex);
var postId = postIdRange.getValue();
if (postId != ''){
var postObj = getPostObj(sheet, lastRowIndex);
sheet.deleteRow(lastRowIndex);
if (isNumOrNumStr(postId)){
// edit post by row number
postId = parseInt(postId);
if (postId > 1 && postId <= parseInt(submitNum)){
if (postObj.title == '' && postObj.content == ''){
// delete post by postId
sheet.deleteRow(lastRowIndex);
deletePost(postId);
} else{
editPost(postId, postObj);
sheet.deleteRow(lastRowIndex);
}
}
}
} else{
postIdRange.setValue(makePostId());
}
}
function getPostRowIndexById(postId){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var maxRowNum = sheet.getMaxRows();
for (var i = 2; i <= maxRowNum; i++){
if (getPostIdRange(sheet, i).getValue() == postId)
return i;
}
return 0;
}
function editPost(id, postObj){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var postRowIndex = getPostRowIndexById(id);
if (postRowIndex){
getTitleRange(sheet, postRowIndex).setValue(postObj.title);
getContentRange(sheet, postRowIndex).setValue(postObj.content);
}
}
function deletePost(id){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var postRowIndex = getPostRowIndexById(id);
if (postRowIndex){
sheet.deleteRow(postRowIndex);
}
}
function newPost(){
}
function getLastPost(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var lastRowIndex = sheet.getLastRow();
return lastRowIndex;
}
function getPostObj(sheet, rowIndex){
var obj = {};
obj.title = getTitleRange(sheet, rowIndex).getValue();
obj.content = getContentRange(sheet, rowIndex).getValue();
return obj;
}
function getPasswordRange(sheet, rowIndex){
var passwordRange = sheet.getRange("E" + rowIndex);
return passwordRange;
}
function getPasswordColumnRange(sheet){
var maxRowNum = sheet.getMaxRows();
var passwordColumnRange = sheet.getRange("E2:E" + maxRowNum);
return passwordColumnRange;
}
function getPostIdRange(sheet, rowIndex){
var postIdRange = sheet.getRange("D" + rowIndex);
return postIdRange;
}
function getTitleRange(sheet, rowIndex){
var titleRange = sheet.getRange("B" + rowIndex);
return titleRange;
}
function getContentRange(sheet, rowIndex){
var ContentRange = sheet.getRange("C" + rowIndex);
return ContentRange;
}
function getTotalSubmitTimesRange(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[1];
return sheet.getRange("A2");
}
function makePostId(){
var totalSubmitTimesRange = getTotalSubmitTimesRange();
var newPostId = totalSubmitTimesRange.getValue() + 1;
totalSubmitTimesRange.setValue(newPostId);
return newPostId;
}
function isNumOrNumStr(val){
if (typeof val == 'number')
return true;
if (typeof val == 'string' && /^(\d+)$/.test(val)){
return true;
}
return false;
}
function clearAllPassword(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var maxRowNum = sheet.getMaxRows();
var passwordColumnRange = getPasswordColumnRange(sheet);
passwordColumnRange.clear();
}