我想通过 Google 表格中的脚本在 Google Drive 中创建一些文件夹,然后获取新文件夹的 URL 以将它们放入单元格中。
我成功地根据“员工 ID”列创建了文件夹,并用文件夹超链接替换了“员工 ID”列的值。
所以我得到了在 Google Drive 中创建的 3 个文件夹:分别为 1,2 和 3。问题是我的代码在 Google 表格的每一行中重复相同的名称和 URL,设置创建的最后一个文件夹的名称和 URL(在本例中为文件夹 3)。
如果您能给我一些帮助,我将不胜感激。这是我的代码:
function onEdit(e) {
if ([1, 2,].indexOf(e.range.columnStart) != 1) return;
createEmployeeFolder();
}
function createEmployeeFolder() {
var parent = DriveApp.getFolderById("1H0i69rE9WO0IAoxhnrFY2YKT_tD50fuX")
SpreadsheetApp.getActive().getSheetByName('Database').getRange('B3:B').getValues()
.forEach(function (r) {
if(r[0]) checkIfFolderExistElseCreate(parent, r[0]);
})
}
function checkIfFolderExistElseCreate(parent, folderName) {
var folder;
var idfolder;
var link;
try {
folder = parent.getFoldersByName(folderName).next();
} catch (e) {
folder = parent.createFolder(folderName);
idfolder = folder.getId();
link = folder.getUrl();
formula = '=hyperlink("' + link + '",' + folder + ')';
SpreadsheetApp.getActive().getSheetByName('Database').getRange('B3:B').setFormula(formula);
}
}
好的,我为此更改了代码。我可以创建文件夹,但问题在于SetFormula我无法使其工作以读取每一行以将 ID 替换为 URL。它只取最后一个 ID,然后在该范围内的所有行中重复相同的 ID。请帮忙!:P
function createEmployeeFolder() {
var parent = DriveApp.getFolderById("1H0i69rE9WO0IAoxhnrFY2YKT_tD50fuX")
SpreadsheetApp.getActive().getSheetByName('Database').getRange('B3:B').getValues()
.forEach(function (r) {
if(r[0]) createFolder(r[0]);
})
}
function createFolder(folderName) {
var parent = DriveApp.getFolderById("1H0i69rE9WO0IAoxhnrFY2YKT_tD50fuX");
var projectFolder;
if (parent.getFoldersByName(folderName).hasNext()) {
// folder already exists
Folder = parent.getFoldersByName(folderName).next();
} else {
Folder = parent.createFolder(folderName);
}
var id = Folder.getId();
var link = Folder.getUrl();
var formula = '=hyperlink("' + link + '",' + Folder + ')';
SpreadsheetApp.getActive().getSheetByName('Database').getRange('B3:B').setFormula(formula);
return formula;
}