谷歌应用脚本新手在这里。Image caption 我找到了这段代码,它使用谷歌表格的输入,帮助在我的个人谷歌驱动器中创建文件夹(图片来源:Youtube上的谷歌表格社区(。但是,当我尝试在共享的Google云端硬盘中重新创建此应用程序时,它无法运行,而是继续在我的个人驱动器中创建文件夹。我可以对代码进行任何更改以使其在共享云端硬盘环境中而不是我自己的环境中工作吗?
多谢!
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('GDrive')
.addItem('Create new Folders', 'crtGdriveFolder')
.addToUi(); }
function crtGdriveFolder() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = sheet.getLastRow(); // Number of rows to process
var maxRows = Math.min(numRows,20); //Limit the number of rows to prevent enormous number of folder creations
var folderid = sheet.getRange("C2").getValue();
var root = sheet.getRange("D2").getValue();
var dataRange = sheet.getRange(startRow, 1, maxRows, 2); //startRow, startCol, endRow, endCol
var data = dataRange.getValues();
var folderIterator = DriveApp.getFoldersByName(folderid); //get the file iterator
if(!folderIterator.hasNext()) { SpreadsheetApp.getActiveSpreadsheet().toast('Folder not found!');
return; }
var parentFolder = folderIterator.next();
if(folderIterator.hasNext()) {
SpreadsheetApp.getActiveSpreadsheet().toast('Folder has a non-unique name!');
return; }
for (i in data) {
var row = data[i];
var name = row[0]; // column A
var desc = row[1]; // column B
if(root == "N" && name != "") {
var idNewFolder = parentFolder.createFolder(name).setDescription(desc).getId(); Utilities.sleep(100);
var newFolder = DriveApp.getFolderById(idNewFolder);
} if(root == "Y" && name != "") {
var idNewFolder = DriveApp.createFolder(name).setDescription(desc).getId();
Utilities.sleep(100);
var newFolder = DriveApp.getFolderById(idNewFolder);
}
}
}
DriveApp
默认会在您自己的云端硬盘中创建文件夹
- 如果您想改为在共享云端硬盘上创建文件夹,则需要使用基于云端硬盘 API 的高级云端硬盘服务
- 确保在使用前启用高级服务
- 使用高级选项
{supportsAllDrives : true}
- 将共享云端硬盘的
id
指定为parents
如何根据您的代码在共享云端硬盘上创建文件夹的示例:
} if(root == "Y" && name != "") {
var optionalArgs={supportsAllDrives: true};
var resource = {
title: name,
description: desc,
mimeType: "application/vnd.google-apps.folder",
parents:[{
"id": "ID OF SHARED DRIVE"
}]
}
var idNewFolder = Drive.Files.insert(resource, null, optionalArgs).id;
Utilities.sleep(100);
var newFolder = DriveApp.getFolderById(idNewFolder);
}