let ss = SpreadsheetApp.getActiveSpreadsheet();
const commandError = {
"error": true,
"errorMessage": "The command is invalid."
}
function doPost(e) {
let sheet = ss.getSheetByName("user");
let userToken = e.parameter.token;
let getId = e.parameter.getid;
let url = "https://oauth2.googleapis.com/tokeninfo?id_token=" + userToken;
let response = JSON.parse(UrlFetchApp.fetch(url).getContentText());
if (response.error != "invalid_token") {
let googleId = response.sub;
let email = response.email;
let name = response.name;
let picture = response.picture;
let lastRow = sheet.getLastRow();
let sheetData = sheet.getRange(2, 1, lastRow - 1, 1).getValues();
for (let i = 0; i < lastRow - 1; i++) {
if (sheetData[i][0] == getId) {
sheet.getRange(i + 2, 2).setValue(googleId);
sheet.getRange(i + 2, 3).setValue(email);
sheet.getRange(i + 2, 4).setValue(name);
sheet.getRange(i + 2, 5).setValue(picture);
}
}
let returnValue = {
"login": true,
"id": googleId,
"email": email,
"name": name
}
console.log(returnValue);
return ContentService.createTextOutput(JSON.stringify(returnValue)).setMimeType(ContentService.MimeType.JSON);
}
}
function doGet(e) {
let sheet = ss.getSheetByName("user");
let command = e.parameter.command;
let getId = "";
let lastRow = sheet.getLastRow();
let returnValue = {};
switch (command) {
case "newLogin":
getId = makeGetid();
sheet.getRange(lastRow + 1, 1).setValue(getId);
returnValue = {
"error": false,
"getId": getId
}
return ContentService.createTextOutput(JSON.stringify(returnValue)).setMimeType(ContentService.MimeType.JSON);
break;
case "checkLogin":
getId = e.parameter.getid;
let sheetData = sheet.getRange(2, 1, lastRow - 1, 5).getValues();
for (let i = 0; i < lastRow - 1; i++) {
if (sheetData[i][0] == getId) {
if (!(sheetData[i][1] == "" || sheetData[i][2] == "" || sheetData[i][3] == "" || sheetData[i][4] == "")) {
returnValue = {
"error": false,
"googleId": sheetData[i][1],
"email": sheetData[i][2],
"name": sheetData[i][3],
"picture": sheetData[i][4]
};
sheet.deleteRow(i + 2);
} else {
returnValue = {
"error": true,
"errorMessage": "User is not logged in."
};
}
}
}
if (returnValue.error == undefined) {
returnValue = {
"error": true,
"errorMessage": " The getId is invalid."
};
}
return ContentService.createTextOutput(JSON.stringify(returnValue)).setMimeType(ContentService.MimeType.JSON);
break;
default:
return ContentService.createTextOutput(JSON.stringify(commandError)).setMimeType(ContentService.MimeType.JSON);
}
}
function makeGetid() {
let aToz = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
let getId = "";
for (let i = 0; i < 30; i++) {
getId = getId + aToz[random(0, 25)];
}
getId = getId + Date.now();
console.log(getId);
return getId;
}
function random(mn, mx) {
return Math.floor(Math.random() * (mx - mn)) + mn;
}