修改脚本获取工作表文件夹ID



我想在这里修改这个脚本:使用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模板

相关内容

  • 没有找到相关文章