我正在尝试使用Google Docs运行脚本来为新客户端创建必要的文件夹结构(将内容/图像上传到其中)。这就是我所拥有的:
/**
* This script creates the necessary folder structure for a new client
*/
function newClientSetup() {
var initial = DocsList.getFolder("Clients");
var client = DocsList.addtoFolder.createFolder("Client Name");
var file = DocsList.addtoFolder(client);
};
现在这不起作用(TypeError: Cannot call method "createFolder" of undefined. (line 7)
),但我无法弄清楚如何在Folder
中使用DocList
类。我看到DocsList
有一个createFolder
方法,我可以使用它:
var folder = DocsList.createFolder("Folder Name");
但我正在尝试使用名为Clients
的父文件夹(已在Google文档中),然后创建以下结构:
Clients
Client Name
Content
Images
理想情况下,我可以运行此脚本,但传入Client Name
的变量来实际创建客户端名称,但我没有从文档中找到太多帮助。有什么建议?谢谢!
答案 0 :(得分:3)
以下是其工作原理的示例,请参阅注释:
function createSubFolder(subfolder) { // the argument is the name of the folder you want to create
var parentfolder = DocsList.getFolder('Clients'); //begin in the client folder (you could also open by Id, I prefer the ID as I find it more failsafe (ID are unique, names aren't necessarily
var newFolder = DocsList.createFolder(subfolder); // create the new subfolder from the argument of the function
newFolder.addToFolder(parentfolder);// add the newly created folder to 'Clients'
}
测试此函数只需使用以下内容:
function test(){
createSubFolder('test');// this will create a new folder called test in your Clients folder
}
注意:要获取文件夹的ID,请在文件夹的url中的文件夹/后面取值。 粗体 中的示例:https://drive.google.com/?hl=fr&tab=wo#folders/ 0B3qSFxxxxxxxxxdsMTFZMDQ
如果您有更多文件夹级别,序列可能会更长...但结构始终相同,并且对于每个文件夹都是唯一的。
答案 1 :(得分:2)
这是一个函数和我写的一些可能对你有帮助的代码。它使用子函数来查看文件夹是否已经存在以及它是否已经存在。如果该文件夹已经存在,则返回该对象,这有助于链接(referenced here on how it is used):
function newClientSetup() {
var ROOT_FOLDER = "Clients";
var CLIENTNAME_FOLDER = "Client Names";
// get a the system route folder (if it deosn't existing make it
var rootFolder = folderMakeReturn(ROOT_FOLDER);
// create/get draft and release folders
var clientNamesFolder = folderMakeReturn(CLIENTNAME_FOLDER,rootFolder, ROOT_FOLDER+"/"+CLIENTNAME_FOLDER);
}
// function to see if folder exists in DocList and returns it
// (optional - if it doesn't exist then makes it)
function folderMakeReturn(folderName,optFolder,optFolderPath){
try {
if (optFolderPath != undefined){
var folder = DocsList.getFolder(optFolderPath);
} else {
var folder = DocsList.getFolder(folderName);
}
return folder;
} catch(e) {
if (optFolder == undefined) {
var folder = DocsList.createFolder(folderName);
} else {
var folder = optFolder.createFolder(folderName);
}
return folder;
}
}