Advertisement
Guest User

Untitled

a guest
Feb 11th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. function test_doGet() {
  2. var e = {};
  3. e.parameter = {};
  4. e.parameters = {};
  5. e.parameters.callback = 'callback';
  6. e.parameter.url = "";
  7. e.parameter.sheet = 'Sheet1';
  8. e.parameter.range = 'A1:H';
  9. Logger.log(doGet(e).getContent());
  10. }
  11.  
  12.  
  13. function doGet(e) {
  14. var currentUser = Session.getActiveUser().getEmail();
  15. var ssUrl = e.parameter.url;
  16. var sheetName = e.parameter.sheet;
  17. var a1Notation = e.parameter.range;
  18. var sps = SpreadsheetApp.openByUrl(ssUrl);
  19. Logger.log(sps.getSheets()[0].getName());
  20. var sheet = sps.getSheetByName(sheetName);
  21. Logger.log(sheet);
  22. var range = sheet.getRange(a1Notation);
  23. var data = range.getValues();
  24. var dt = {cols:[], rows:[]};
  25. var permissionsCol = null;
  26. var firstCol = range.getColumn();
  27. for(var i = 0; i < data[0].length; i++) {
  28. if(data[1][i].indexOf('Permissions') != -1) permissionsCol = i;
  29. dt.cols.push({id:numToA(firstCol+i), label:data[0][i] + ' ' + data[1][i].replace('Permissions', ''), type: 'string', isNumber:true, isDate:true, isEmpty:true});
  30. }
  31. for(var i = 2; i < data.length; i++) {
  32. if(permissionsCol == null || currentUser != '' && data[i][permissionsCol].indexOf(currentUser) != -1) {
  33. var row = [];
  34. for(var j = 0; j < data[i].length; j++) {
  35. if(isNaN(data[i][j])) dt.cols[j].isNumber = false;
  36. else if ((data[i][j] != "") && (data[i][j] >= 0) && (data[i][j] <= 1)) {
  37. Logger.log(data[i][j]);
  38. dt.cols[j].isNumber = false;
  39. data[i][j] = (data[i][j]*100).toString() + "%";
  40. }
  41. if(data[i][j] != '') dt.cols[j].isEmpty = false;
  42. if(data[i][j] instanceof Date == false) dt.cols[j].isDate = false;
  43. else if(data[i][j].getFullYear() == 1899) {
  44. dt.cols[j].isDate = false;
  45. data[i][j] = data[i][j].getHours()+':'+(data[i][j].getMinutes()<10?'0':'')+data[i][j].getMinutes();
  46. }
  47. else data[i][j] = "Date("+data[i][j].getTime()+")";
  48. row.push({v:data[i][j]});
  49. }
  50. dt.rows.push({c:row});
  51. }
  52. }
  53. for(var i = 0; i < data[0].length; i++) {
  54. if(dt.cols[i].isEmpty) dt.cols[i].type = 'string';
  55. else if(dt.cols[i].isDate) dt.cols[i].type = 'datetime';
  56. else if(dt.cols[i].isNumber) dt.cols[i].type = 'number';
  57. }
  58. if ('templateSheet' in e.parameter && e.parameter.templateSheet.toLowerCase().indexOf('template') != -1){
  59. var templateSheet = sps.getSheetByName(e.parameter.templateSheet);
  60. var templateRange = templateSheet.getRange(e.parameter.templateRange);
  61. var templateData = templateRange.getValues();
  62. var tp = {cols:[], rows:[]};
  63. for(var i = 0; i < templateData[0].length; i++) tp.cols.push({id:i, label:templateData[0][i], type: 'string'});
  64. for(var i = 0; i < templateData.length; i++) {
  65. var row = [];
  66. for(var j = 0; j < templateData[i].length; j++) row.push({v:templateData[i][j]});
  67. tp.rows.push({c:row});
  68. }
  69. var output = e.parameters.callback + '(' + JSON.stringify({dataTable: dt,template: tp}) + ')';
  70. }else{
  71. var output = e.parameters.callback + '(' + JSON.stringify({dataTable: dt}) + ')';
  72. }
  73.  
  74. return ContentService.createTextOutput(output).setMimeType(ContentService.MimeType.JAVASCRIPT);
  75. }
  76. function numToA(num){
  77. var a = '',modulo = 0;
  78. for (var i = 0; i < 6; i++){
  79. modulo = num % 26;
  80. if(modulo == 0) {a = 'Z' + a;num = num / 26 - 1;}
  81. else{a = String.fromCharCode(64 + modulo) + a;num = (num - modulo) / 26;}
  82. if (num <= 0) break;}
  83. return a;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement