Har*_*Das 12 google-apps-script
任何人都可以帮助我
我想在特定文件夹中通过App Script创建一个电子表格.怎么做.
目前我正在做如下:
var folder = DocsList.getFolder("MyFolder");
var sheet = SpreadsheetApp.create("MySheet");
var file = DocsList.getFileById(sheet.getId());
file.addToFolder(folder);
file.removeFromFolder(file.getParents()[0]);
Run Code Online (Sandbox Code Playgroud)
它不工作.......
oze*_*bee 24
正如@Joshua所建议的那样,可以使用高级驱动器服务创建一个电子表格(在特定文件夹中):
var name = 'your-spreadsheet-name'
var folderId = 'your-folder-id'
var resource = {
title: name,
mimeType: MimeType.GOOGLE_SHEETS,
parents: [{ id: folderId }]
}
var fileJson = Drive.Files.insert(resource)
var fileId = fileJson.id
Run Code Online (Sandbox Code Playgroud)
无需使用此方法移动文件!
由于您无法再使用DriveApp创建Google文档(文档或SpreadSheets),也不能使用addToFolder,因为不推荐使用DocList.只有一种方法可以创建或"移动"Google文档或Google SpreadSheets.
//"Move" file to folder-------------------------------//
var fileID = '12123123213321'
var folderID = '21321312312'
var file = DriveApp.getFileById(fileID).getName()
var folder = DriveApp.getFolderById(folderID)
var newFile = file.makeCopy(file, folder)
//Remove file from root folder--------------------------------//
DriveApp.getFileById(fileID).setTrashed(true)
Run Code Online (Sandbox Code Playgroud)
如您所见,这不会移动文件,它会在您想要的文件夹中创建一个具有相同名称的副本,然后将原始文件移动到废纸篓.我很确定没有其他方法可以做到这一点.
另一个答案有点短(而且不是很明确).虽然你的方法是逻辑的,但如果你替换它应该有效
file.removeFromFolder(file.getParents()[0]);
Run Code Online (Sandbox Code Playgroud)
同
file.removeFromFolder(DocsList.getRootFolder());
有一种更好的方法可以使用新的Drive应用程序和Folder Class 执行相同的工作,Folder有一个方法来创建文件,您可以使用mimeType枚举指定文件类型.
代码是这样的:
function myFunction() {
var folders = DriveApp.getFoldersByName('YOUR FOLDER NAME'); // replace by the right folder name, assuming there is only one folder with this name
while (folders.hasNext()) {
var folder = folders.next();
}
folder.createFile('new Spreadsheet', '', MimeType.GOOGLE_SHEETS); // this creates the spreadsheet directly in the chosen folder
}
Run Code Online (Sandbox Code Playgroud)
folder = DriveApp.getFolderById("FOLDER_ID")
var ss = SpreadsheetApp.create("SPREADSHEET_NAME")
var temp = DriveApp.getFileById(ss.getId());
folder.addFile(temp)
DriveApp.getRootFolder().removeFile(temp)
Run Code Online (Sandbox Code Playgroud)
您可以使用上述代码实现相同功能,而无需使用高级驱动器服务
小智 5
您可以创建一个电子表格,然后将其添加到该文件夹中。
function createSpreadSheetInFolder(name,folder){
var ss = SpreadsheetApp.create(name);
var id = ss.getId();
var file = DriveApp.getFileById(id);
folder.addFile(file);
return ss;
}
folderId='your_folder_id'
name='my_new_ss'
folder=DriveApp.getFolderById(folderId)
createSpreadSheetInFolder(name,folder)
Run Code Online (Sandbox Code Playgroud)
通过使用folder.addFile方法,不需要使用临时文件(不需要复制和删除文件)。非常简单!
2020 年 7 月 27 日有以下更新:
该文件类现在有以下方法:
Folder 类现在具有以下方法:
以下 Folder 类方法已被弃用:
https://developers.google.com/apps-script/releases/#july_27_2020
因此,您可以使用以下file.moveTo(destination)方法在文件夹中创建电子表格文件:
function createSpreadSheetInFolder(ss_new_name, folder_dest_id) {
var ss_new = SpreadsheetApp.create(ss_new_name);
var ss_new_id = ss_new.getId();
var newfile = DriveApp.getFileById(ss_new_id);
newfile.moveTo(DriveApp.getFolderById(folder_dest_id))
return ss_new_id;
}
var file_name = 'SPREADSHEET NAME';
var folder_id = 'DESTINATION FOLDER ID';
var new_ssId = createSpreadSheetInFolder(file_name, folder_id)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24225 次 |
| 最近记录: |