我想在这里修改这个脚本:使用Google Apps script上传多个大文件到Google Drive
问题如下:该脚本上传到forms.html
文件中const uploadParentFolderId = "1cOe4ZXjBUZHgPwADg1QRpUzcQqGxON_4";
定义的文件夹中的文件夹中,问题是我打算通过html alert
在电子表格中调用该脚本,我希望该文件在电子表格文件夹的文件夹中上传,也就是说,该脚本需要获得电子表格文件夹的ID
。
Javascript是一种有点脱离我日常生活的语言,但我正试图自己学习它…
如果有人能给我一点启示,那就太有帮助了!编辑:
我试过了:
var ssid = SpreadsheetApp.getActiveSpreadsheet().getId();
var AllFolders = DriveApp.getFileById(ssid).getParents();
var ChildFolderTest;
if (AllFolders.hasNext()) {
ChildFolderTest = AllFolders.next();
var FinalFolderID = ChildFolderTest.getId();
}
const chunkSize = 5242880;
const uploadParentFolderId = FinalFolderID; // creates a folder inside of this folder
但是由于某些原因它不能工作,上传不能开始。
你知道怎么解决吗?
下面是如何获取电子表格文件夹id的示例。
form.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<input id="uploadParentFolderId" type="text">
<br>
<input id="getFolderButton" type="button" onclick="getFolderButtonClick()" value="Get Folder">
<script>
function getFolderButtonClick() {
try {
google.script.run.withSuccessHandler(
function(folder) {
document.getElementById("uploadParentFolderId").value = folder;
}
).getFolder();
}
catch(err) {
alert(err);
}
}
</script>
</body>
</html>
Code.gs
function getFolder() {
try {
let spread = SpreadsheetApp.getActiveSpreadsheet();
let file = DriveApp.getFileById(spread.getId());
let folders = file.getParents();
return folders.next().getId();
}
catch(err) {
throw "Error in test: "+err;
}
}
参考
- google.script.run.withSuccessHandler ()
另一种方法是通过打印scriptlet。你可以使用HTML模板从你的服务器函数输出数据并打印到HTML文件。
根据您发现的脚本,您可以首先更改forms.html文件中文件夹const
的声明:
const uploadParentFolderId = <?=getParent()?>; // creates a folder inside of this folder
如文档中所述,<?= ... ?>
标记表明getParent()
函数的输出将被打印到HTML文件中。
getParent()
。返回工作表父文件夹的ID:
function getParent(){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var id = ss.getId()
var parent = DriveApp.getFileById(id).getParents().next().getId()
return parent
}
最后更改代码上的doGet()
函数。使用模板而不是只打印HTML文件,这样可以在输出页面之前解释<?=?>
标记:
function doGet(e) {
return HtmlService.createTemplateFromFile('forms.html').evaluate();
}
我只是从脚本中修改了这个,并且能够在与电子表格相同的位置创建新文件夹。
参考:- HTML模板