我有一张模板(KundJobbTemplate)。每次用户更新单元格(F1)时,都应创建模板表(KundJobbTemplate)的副本,名称为“Kund_xxxx:Jobb_xxxx”。
第一次这很好用。但是,如果不手动重命名新创建的工作表“Kund_xxxx:Jobb_xxxx”并通过更新模板工作表(KundJobbTemplate)中的单元格F1来创建新工作表,则新工作表将获得名称“Copy of KundJobbTemplate”而不是“Copy of Kund_xxxx:Jobb_xxxx” ”
那么如何创建一个新的工作表onEdit(用户更新一个单元格),每次模板“KundJobbTemplate”的副本将获得名称“Kund_xxxx:Jobb_xxxx”,如果已经 存在给它起一个名字“Kund_xxxx的副本:Jobb_xxxx”等。
这是我的代码:
function onEdit(event)
{
var myNewSheetName = "Kund_xxxx:Jobb_xxxx";
var changedCell= event.source.getActiveRange().getA1Notation();
if (changedCell == 'F1') {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('KundJobbMall').copyTo(ss);
SpreadsheetApp.flush(); // Utilities.sleep(2000);
sheet.setName(myNewSheetName);
ss.setActiveSheet(sheet);
}
}
答案 0 :(得分:1)
问题是您尝试将新工作表命名为与发生错误的现有工作表相同。尝试在最后添加一个随机字符串:
function onEdit(event)
{
var randomString = (new Date%9e6).toString(36);
var myNewSheetName = "Kund_xxxx:Jobb_xxxx";
var changedCell= event.source.getActiveRange().getA1Notation();
if (changedCell == 'A1') {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('KundJobbMall').copyTo(ss).setName(myNewSheetName + " - " + randomString);
ss.setActiveSheet(sheet);
}
}
你可以使用任何随机字符串,上面的var randomString只是一个例子。