Advertisement
Guest User

Untitled

a guest
Apr 29th, 2025
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1. // See https://qmacro.org/blog/posts/2013/10/04/sheetasjson-google-spreadsheet-data-as-json/
  2.  
  3. function doGet(request) {
  4. var output = ContentService.createTextOutput();
  5. var data = {};
  6. var id = request.parameters.id;
  7. var sheet = request.parameters.sheet;
  8. var cell = request.parameters.cell;
  9. var ss = SpreadsheetApp.openById(id);
  10. if (sheet) {
  11. if (cell) {
  12. data = ss.getSheetByName(sheet).getRange(cell).getValue();
  13. } else {
  14. data[sheet] = readData_(ss, sheet);
  15. }
  16. } else {
  17. // Grab all sheets except those with a name
  18. // that starts with an underscore
  19. ss.getSheets().forEach(function(oSheet, iIndex) {
  20. var sName = oSheet.getName();
  21. if (! sName.match(/^_/)) {
  22. data[sName] = readData_(ss, sName);
  23. }
  24. })
  25. }
  26. var result = cell ? data : JSON.stringify(data);
  27. var callback = request.parameters.callback;
  28. if (callback == undefined) {
  29. output.setContent(result);
  30. output.setMimeType(cell ? ContentService.MimeType.TEXT : ContentService.MimeType.JSON);
  31. }
  32. else {
  33. output.setContent(callback + "(" + result + ")");
  34. output.setMimeType(ContentService.MimeType.JAVASCRIPT);
  35. }
  36. return output;
  37. }
  38.  
  39.  
  40. function readData_(ss, sheetname, properties) {
  41.  
  42. if (typeof properties == "undefined") {
  43. properties = getHeaderRow_(ss, sheetname);
  44. properties = properties.map(function(p) { return p.replace(/\s+/g, '_'); });
  45. }
  46.  
  47. var rows = getDataRows_(ss, sheetname);
  48. var data = [];
  49. for (var r = 0, l = rows.length; r < l; r++) {
  50. var row = rows[r];
  51. var record = {};
  52. for (var p in properties) {
  53. record[properties[p]] = convert_(row[p]);
  54. }
  55. data.push(record);
  56. }
  57. return data;
  58. }
  59.  
  60.  
  61. function convert_(value) {
  62. if (value === "true") return true;
  63. if (value === "false") return false;
  64. return value;
  65. }
  66.  
  67.  
  68. function getDataRows_(ss, sheetname) {
  69.  
  70. var sh = ss.getSheetByName(sheetname);
  71. return sh.getRange(2, 1, sh.getLastRow() - 1, sh.getLastColumn()).getValues();
  72.  
  73. }
  74.  
  75.  
  76. function getHeaderRow_(ss, sheetname) {
  77.  
  78. var sh = ss.getSheetByName(sheetname);
  79. return sh.getRange(1, 1, 1, sh.getLastColumn()).getValues()[0];
  80.  
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement