@@ -8,27 +8,46 @@ function doGet() {
8
8
//Create a global object to store the response from a POST request
9
9
var RESP ;
10
10
11
+ //Get property from parameter object
12
+ // obj - object to read
13
+ // prop - name of property
14
+ // defval - default value to return if property is not found or undefined
15
+ function getParam ( obj , prop , defval ) {
16
+ if ( prop in obj ) {
17
+ var val = obj [ prop ] ;
18
+ if ( val == undefined || val == null ) return defval ;
19
+ return val ;
20
+ }
21
+ return defval ;
22
+ }
23
+
11
24
//Handle a POST request directly to this service.
12
25
//The parameter "data" should contain CSV content
13
26
//A response page will be generated with a link to the Google Sheet that is generated
14
27
function doPost ( req ) {
15
- RESP = createPlainTextSpreadsheet ( req . parameter . data ) ;
28
+ var name = getParam ( req . parameter , "name" , "" ) ;
29
+ var folderid = getParam ( req . parameter , "folderid" , "" ) ;
30
+ RESP = createPlainTextSpreadsheet ( req . parameter . data , name , folderid ) ;
16
31
var temp = HtmlService . createTemplateFromFile ( 'Response' ) ;
17
32
return temp . evaluate ( ) . setSandboxMode ( HtmlService . SandboxMode . IFRAME ) ;
18
33
}
19
34
20
35
//Handle CSV content sent from the interactive landing page for this script
21
36
//Return a string representation of a JSON object with the name and URL of the generated Google Sheet
22
37
function doTextPost ( req ) {
23
- var resp = createPlainTextSpreadsheet ( req . data ) ;
38
+ var name = getParam ( req , "name" , "" ) ;
39
+ var folderid = getParam ( req , "folderid" , "" ) ;
40
+ var resp = createPlainTextSpreadsheet ( req . data , name , folderid ) ;
24
41
return JSON . stringify ( resp ) ;
25
42
}
26
43
27
44
//Handle file upload content sent from the interactive landing page for this script
28
45
//Return a string representation of a JSON object with the name and URL of the generated Google Sheet
29
46
function processFile ( form ) {
30
47
var blob = form . file ;
31
- var resp = createPlainTextSpreadsheet ( blob . getDataAsString ( ) ) ;
48
+ var name = getParam ( form , "name" , "" ) ;
49
+ var folderid = getParam ( form , "folderid" , "" ) ;
50
+ var resp = createPlainTextSpreadsheet ( blob . getDataAsString ( ) , name , folderid ) ;
32
51
return JSON . stringify ( resp ) ;
33
52
}
34
53
@@ -38,12 +57,20 @@ function processFile(form) {
38
57
//Text wrap will be enabled for all data cells
39
58
//The header row will be highlighted and the columns will be auto-sized
40
59
//Return a JSON object containing the name and URL of the new Google Sheet
41
- function createPlainTextSpreadsheet ( data ) {
60
+ function createPlainTextSpreadsheet ( data , name , folderid ) {
42
61
var arr = Utilities . parseCsv ( data ) ;
43
62
if ( arr . length == 0 ) return "No data" ;
44
63
45
64
var formattedDate = Utilities . formatDate ( new Date ( ) , Session . getScriptTimeZone ( ) , "yyyy-MM-dd_HH:mm" ) ;
46
- var spreadsheet = SpreadsheetApp . create ( "import." + formattedDate + ".csv" ) ;
65
+ var sheetname = ( name == "" ) ? "import" : name ;
66
+ var user = Session . getActiveUser ( ) . getEmail ( ) . replace ( "@georgetown.edu" , "" ) ;
67
+ sheetname += "." + user + "." + formattedDate + ".csv" ;
68
+ var spreadsheet = SpreadsheetApp . create ( sheetname ) ;
69
+
70
+ if ( folderid != "" ) {
71
+ DriveApp . getFolderById ( folderid ) . addFile ( DriveApp . getFileById ( spreadsheet . getId ( ) ) ) ;
72
+ }
73
+
47
74
var sheet = spreadsheet . getActiveSheet ( ) ;
48
75
var range = sheet . getRange ( 1 , 1 , arr . length , arr [ 0 ] . length ) ;
49
76
var rangeR1 = sheet . getRange ( 1 , 1 , 1 , arr [ 0 ] . length ) ;
@@ -60,5 +87,5 @@ function createPlainTextSpreadsheet(data) {
60
87
}
61
88
}
62
89
63
- return { name : spreadsheet . getName ( ) , url : spreadsheet . getUrl ( ) } ;
64
- }
90
+ return { name : spreadsheet . getName ( ) , url : DriveApp . getFileById ( spreadsheet . getId ( ) ) . getUrl ( ) } ;
91
+ }
0 commit comments