【发布时间】:2019-01-15 21:58:46
【问题描述】:
我需要帮助...看起来很简单,但我被困住了。我找到了这段代码并对其进行了一些更改以从 google 表格创建一个文件夹,然后我想检索相应的 folderId 和 dateCreated。我能够创建测试文件夹,但它没有遍历行并且没有打印 folderId 和 dateCreated 值。我正在测试要在 Google Drive 中创建的两个新文件夹。
我的电子表格包含以下内容:
(A) New Parent Folder
(A2) New folder1
(A3) New folder2
(B) Folder Id - print the parent folderId
(B2) Print New folder1 folderId
(B3) Print New folder2 folderId
(C) Date Created - print the creation date
(C2) Print New folder1 dateCreated
(C3) Print New folder2 dateCreated
(D) Root Folder
(D2) Root Folder URL
// 制作文件夹
function create(){
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName('Make Folders');
var project = sheet.getRange(2,1,sheet.getLastRow()).getValues();
var lastColumn = 4;
var projectName = project[0][0];
var parentId = project [0][1];
var date = project [0][2];
var rootFolder = project [0][3];
for (i=0; i<projectName.length ; i++){
if (projectName == '') {
return false;
} else {
var rootURL = sheet.getRange('D2').getValue();
var newFolder = DriveApp.getFolderById(rootURL).createFolder(projectName);
var name = newFolder.getName(); // substring(7);
var file = DriveApp.getFileById('XXXX').makeCopy(newFolder);
}
sheet.getRange(2,2).setValue(newFolder.getId());
sheet.getRange(2,3).setValue(newFolder.getDateCreated());
}
}
脚本仅循环通过 A2 并不断创建相同的文件夹。也许我的循环不正确......我希望代码能够通过 ColumnA 运行(如果有新数据)并将 folderId 和创建日期打印到谷歌表中。
TIA 为您提供帮助。
我已经更新了我的代码,但是我创建的第一个文件夹没有提取和发布第一个文件夹信息,但它确实用于第二个文件夹。我该如何解决?我错过了什么吗?
function createFolders(){
var ss= SpreadsheetApp.openById("XXX")
var sheet = ss.getSheetByName('Make Folders');
var project = sheet.getRange(2,2,sheet.getLastRow(),sheet.getLastColumn()).getValues(); //data
for (i=0; i<project.length-1; i++){
var root = project [i][0];
var folderName = project[i][1];
var id = project[i][2];
var datec = project[i][3];
var rootid = ss.getRange('A2').getValue(); //user enters the root folder id
var newFolder = DriveApp.getFolderById(rootid).createFolder(project[i][0]);
}
sheet.getRange(i+1,3,1,2).setValues([ [newFolder.getId(), newFolder.getDateCreated()] ]);
}
【问题讨论】:
-
您的循环确实不正确。您将需要使用迭代器
i和您的工作表数据project。查看有关 JavaScript 循环的教程。 -
关于您最近的编辑,您仍然有一些需要删除的遗留逻辑(
rootidvsroot),并且您的 write 语句使用迭代器,但在循环之外。虽然最好在循环外进行写入(批处理操作),但您必须创建在循环内写入的对象(每个内存中的数据行)。查看应用脚本“最佳实践”页面,了解一些对您有帮助的示例。
标签: javascript for-loop google-apps-script google-sheets