【发布时间】:2023-03-13 06:21:01
【问题描述】:
以下脚本用于创建用于项目的文件夹,
问题是当脚本第二次运行时,它会删除第一次创建的先前创建的超链接,但文件夹仍保留在父文件夹中
单元格中仍然存在的文件夹从 =HYPERLINK("insert folder link", "J10447") 变为 =HYPERLINK("undefined", "J10447")
function creatFolder() {
const parent = DriveApp.getFolderById("insert folder id");
const sheet = SpreadsheetApp.getActive().getSheetByName('Detailing');
const range = sheet.getRange(2, 1, sheet.getLastRow() - 2);
range.getValues().forEach(function (row, index) {
// Consider checking if this r & c has a formula in the equal size array from getFormulas()
if(row[0]) {
var newLink = getLinkForFolderName_(parent, row[0]);
// Use the current array index to write this formula in only the correct cell.
range.offset(index, 0, 1).setFormula(
"HYPERLINK(\"" + newLink + "\", \"" + row[0] + "\")"
);
}
});
}
function getLinkForFolderName_(root, name) {
var folder;
const search = root.getFoldersByName(name);
if (search.hasNext()) {
folder = search.next();
if (search.hasNext())
console.warn("Multiple folders named '" + name + "' in root folder '" + root.getName() + "'");
}
else {
folder = root.createFolder(name);
["Quotes", "Construction dwg's", "Window Schedule", "Data File", "Delivery Photos"].forEach(function(e) {
folder.createFolder(e);
});
return folder.getUrl();
}
}
【问题讨论】:
-
使用状态栏让您现在已经创建了超链接
-
您是否尝试过在调用
getLinkForFolderName_之前先使用getFormula()检查单元格上的公式?这样,如果您现有的公式已经很好,您可以跳过再次设置公式。
标签: google-apps-script google-sheets google-drive-api