我正在尝试制作HTML以将文件上传到驱动器。每次上传都会创建一个新文件夹。我的问题是我无法为每次上传设置新的文件夹ID。它根据输入+日期创建一个新文件夹。我要在SS上保存一个新的文件夹ID。如何通过HTML上的SS单元格值.setParent
?
Code.gs
/*
Fetch the oAuthToken
*/
function getOAuthToken() {
DriveApp.getRootFolder()
Logger.log(ScriptApp.getOAuthToken())
return ScriptApp.getOAuthToken();
}
function doGet(){
return HtmlService.createTemplateFromFile('drivePicker')
.evaluate()
.setTitle('Upload Files')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function createFolder(form) {
var nameBox = form.subfolder;
var d = new Date();
var time = d.toLocaleTimeString()
var curr_date = d.getDate();
var curr_month = d.getMonth() + 1 ;
var curr_year = d.getFullYear();
var tDate = curr_year + "/" + curr_month + "/" + curr_date + " - " + time;
var dest = DriveApp.getFolderById("main Folder ID").createFolder(nameBox+" "+tDate);
var destID = dest.getId();
var ss = SpreadsheetApp.openById('SS ID');
var sheet = ss.getSheetByName("Name");
sheet.getRange(1,1).setValue(destID);
}
drivePicker.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">
</script>
<style>
#attachmentTable {
background: white;
}
tr th,tr td {
text-align:center;
}
</style>
</head>
<body style='font-family: cursive;'>
<div align="center">
<h1>Please upload the files</h1>
<p><img src="http://www.free-icons-download.net/images/upload-logo-icon-
68584.png" style="width:500px;height:500px;transform:rotate(0deg);margin-
top:50px"></p>
<BR>
<form>
<input type="text" name="subfolder" id="subfolder" placeholder="Your name..">
</form>
<center><button onclick='formSubmit();getOAuthToken()' style="margin-
top:150px;outline:0;" class="btn btn-success">Upload File(s)</button>
</center>
<div class='table-responsive' style="display:none;" id="attachmentTableDiv">
<table id="attachmentTable" class="table table-bordered"
style="width:900px;margin:20px auto;float:none;">
<thead>
<tr style="background:#f1f1f1;">
<th>Title</th>
<th>ID</th>
<th>URL</th>
<th>Date Created</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<script type="text/javascript">
function formSubmit() {
google.script.run.withSuccessHandler().createFolder(document.forms[0]);
}
</script>
<script>
var DEVELOPER_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxx';
var pickerApiLoaded = false;
/**
* Loads the Google Picker API.
*/
function onApiLoad() {
gapi.load('picker', {'callback': function() {
pickerApiLoaded = true;
}});
}
function getOAuthToken() {
google.script.run.withSuccessHandler(createPicker).getOAuthToken();
}
function createPicker(token) {
if (pickerApiLoaded && token) {
var uploadview = new google.picker.DocsUploadView().setParent('NEW FOLDER ID'); //How to set the ID from the SS cell A1 ?????
var picker = new google.picker.PickerBuilder()
.addView(uploadview)
//.addView(all)
.hideTitleBar()
//.setLocale('nl') //--Regional language settings
//.enableFeature(google.picker.Feature.NAV_HIDDEN)
.setOAuthToken(token)
.setSize(536, 350)
.setDeveloperKey(DEVELOPER_KEY)
.setCallback(pickerCallback)
.setOrigin(google.script.host.origin)
.enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
.build();
picker.setVisible(true);
} else {
showError('Unable to load the file picker.');
}
}
/**
* A callback function that extracts the chosen document's metadata from the response object.
*/
function pickerCallback(data) {
var action = data[google.picker.Response.ACTION];
if (action == google.picker.Action.PICKED) {
for(var i in data[google.picker.Response.DOCUMENTS]){
var doc = data[google.picker.Response.DOCUMENTS][i];
var id = doc[google.picker.Document.ID];
var url = doc[google.picker.Document.URL];
var title = doc[google.picker.Document.NAME];
var dateCreated = doc[google.picker.Document.LAST_EDITED_UTC];
var date = new Date(dateCreated);
date=date.toLocaleString();
$('#attachmentTable tbody').append("<tr><td>"+title+"</td><td>"+id+"</td><td><a href='"+url+"' target='_blank'>Link</a></td><td>"+date+"</td></tr>");
$('#attachmentTableDiv').show();
}
}
}
</script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script>google.load("picker", "1",{callback:function(){pickerApiLoaded
=!0}});</script>
</body>
</html>