fork download
  1. function doGet(e) {
  2. var candidateName = e.parameter.candidate;
  3. if (!candidateName) return ContentService.createTextOutput("Error: No name.");
  4.  
  5. var ss = SpreadsheetApp.getActiveSpreadsheet();
  6. var sheet = ss.getSheets()[0];
  7. var lock = LockService.getScriptLock();
  8.  
  9. if (lock.tryLock(10000)) {
  10. try {
  11. var lastRow = sheet.getLastRow();
  12.  
  13. // Initialize totals strictly as 0
  14. var t1 = 0; // CSE
  15. var t2 = 0; // EEE
  16. var t3 = 0; // CE
  17.  
  18. // Only check previous row if data exists (Row > 1)
  19. if (lastRow > 1) {
  20. // Get last values from Columns C, D, E
  21. var lastValues = sheet.getRange(lastRow, 3, 1, 3).getValues()[0];
  22.  
  23. // Force them to be numbers. If empty/error, make it 0.
  24. t1 = Number(lastValues[0]) || 0;
  25. t2 = Number(lastValues[1]) || 0;
  26. t3 = Number(lastValues[2]) || 0;
  27. }
  28.  
  29. // Add vote to the correct bucket
  30. if (candidateName == "CSE") t1++;
  31. else if (candidateName == "EEE") t2++;
  32. else if (candidateName == "CE") t3++;
  33.  
  34. // Save: [Time, Name, Total CSE, Total EEE, Total CE]
  35. var newRow = [new Date(), candidateName, t1, t2, t3];
  36. sheet.appendRow(newRow);
  37.  
  38. return ContentService.createTextOutput("Success: " + candidateName + " | Totals: " + t1 + "," + t2 + "," + t3);
  39.  
  40. } catch (error) {
  41. return ContentService.createTextOutput("Error: " + error.message);
  42. } finally {
  43. lock.releaseLock();
  44. }
  45. }
  46. }
Success #stdin #stdout 0.57s 44172KB
stdin
Standard input is empty
stdout
Standard output is empty