Skip to content

Commit 7158135

Browse files
committed
Allow name and folder id to passed during upload
1 parent 4a383b2 commit 7158135

File tree

4 files changed

+48
-10
lines changed

4 files changed

+48
-10
lines changed

.project

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>PlainTextCSV_GoogleAppsScript</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
</buildSpec>
9+
<natures>
10+
</natures>
11+
</projectDescription>

Code.gs

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,46 @@ function doGet() {
88
//Create a global object to store the response from a POST request
99
var RESP;
1010

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+
1124
//Handle a POST request directly to this service.
1225
//The parameter "data" should contain CSV content
1326
//A response page will be generated with a link to the Google Sheet that is generated
1427
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);
1631
var temp = HtmlService.createTemplateFromFile('Response');
1732
return temp.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
1833
}
1934

2035
//Handle CSV content sent from the interactive landing page for this script
2136
//Return a string representation of a JSON object with the name and URL of the generated Google Sheet
2237
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);
2441
return JSON.stringify(resp);
2542
}
2643

2744
//Handle file upload content sent from the interactive landing page for this script
2845
//Return a string representation of a JSON object with the name and URL of the generated Google Sheet
2946
function processFile(form) {
3047
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);
3251
return JSON.stringify(resp);
3352
}
3453

@@ -38,12 +57,20 @@ function processFile(form) {
3857
//Text wrap will be enabled for all data cells
3958
//The header row will be highlighted and the columns will be auto-sized
4059
//Return a JSON object containing the name and URL of the new Google Sheet
41-
function createPlainTextSpreadsheet(data) {
60+
function createPlainTextSpreadsheet(data, name, folderid) {
4261
var arr = Utilities.parseCsv(data);
4362
if (arr.length == 0) return "No data";
4463

4564
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+
4774
var sheet = spreadsheet.getActiveSheet();
4875
var range = sheet.getRange(1, 1, arr.length, arr[0].length);
4976
var rangeR1 = sheet.getRange(1, 1, 1, arr[0].length);
@@ -60,5 +87,5 @@ function createPlainTextSpreadsheet(data) {
6087
}
6188
}
6289

63-
return {name: spreadsheet.getName(), url: spreadsheet.getUrl()};
64-
}
90+
return {name: spreadsheet.getName(), url: DriveApp.getFileById(spreadsheet.getId()).getUrl()};
91+
}

Index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,4 @@ <h2>Upload the Text from a CSV file</h2>
5454
<h2>Link to new Spreadsheet</h2>
5555
<div id="output">Upload CSV text in order to generate a new Google Sheet</div>
5656
</body>
57-
</html>
57+
</html>

Response.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<!DOCTYPE html>
22
<html>
33
<body>
4-
<a href="<?= RESP.url ?>">Google Sheet <?= RESP.name ?> Created</a>
4+
Google Sheet <a style="color:red" href="<?= RESP.url ?>" target="_blank" title="Click to open in Google Drive"><?= RESP.name ?></a> Created.
55
</body>
6-
</html>
6+
</html>

0 commit comments

Comments
 (0)