我有一个函数:
function reNameThisSheet() {
var active = SpreadsheetApp.getActiveSheet();
active.setName(active.getRange('A2').getValue());
}
我通过按下脚本编辑器中的运行按钮手动触发它,执行它需要半分钟(32-33秒)以上的时间=在所需的表单上获得所需的名称。
我在复制电子表格中的最后一张工作表后运行此函数,在运行此函数之前,我运行另一个函数,该函数根据工作表索引设置A2中的值。
根据工作表的工作表索引将值设置为A2的函数是一个本地公式:
=indirect("Category!B" & (ReturnSheetIndex()-1))
其中包括自定义公式ReturnSheetIndex():
function ReturnSheetIndex() {
var sheetIndex = SpreadsheetApp.getActiveSheet().getIndex();
Logger.log(sheetIndex);
return sheetIndex;
}
这个函数是我手动触发的,所以我在脚本管理器中指向它并单击保存,这样A2中的值就会立即设置。
在A2中的值被立即设置后,函数reNameThisSheet()需要很长时间才能重命名通过复制上一张图纸创建的图纸。
所有这些都发生在spreadheet中:https://docs.google.com/spreadsheets/d/151TbRey12wGrbdfcGI14U50b5dNcJaHCX2UKRVv6teA/edit?usp=sharing
脂肪测试结果如下:
当我关闭电子表格并再次打开它时,它甚至无法正确加载通过复制过程创建的表格:(
它挂断了。。。
使用以下公式创建的薄片的滴度:
=CONCATENATE(indirect("Category!C" & (1+findCell()))," od ", TEXT(MIN(E5:E),"dd.mm.yyyy") ," do ", TEXT(MAX(E5:E),"dd.mm.yyyy") ," :")
甚至没有出现:(
错误:正在加载数据。。。出现在每张纸的第一行,并保持原样:(
我认为功能有问题:
function findCell() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Category");
var sheet1 = ss.getActiveSheet();
var dataRange = sheet.getDataRange();
var values = dataRange.getValues();
var student = sheet1.getRange("A2").getValue();
for (var i = 0; i < values.length; i++) {
var row = "";
for (var j = 0; j < values[i].length; j++) {
if (values[i][j] == student) {
row = values[i][j+1];
return i;
}
}
}
}
这包含在通过复制创建的图纸的第1行中创建标题中。
但有趣的是:如果我在重新打开电子表格后试图复制最后一张表格,一切都会好起来
只有在关闭和重新打开之前创建的工作表存在未加载函数findCell()的问题。
我们将不胜感激。Thanx。
通过创建一个自定义菜单选项"custom->Duplicate and Name"解决了我的问题,该选项将预先设计的模板表复制到所有表的末尾,并根据同时创建的表的索引从"Category"表中的名称列表中命名它,只需点击两次鼠标
我花了一周的时间在谷歌上搜索和研究,并在这里不厌其烦地收集
function duplicateName() {
var menu = [{name: "Duplicate and Name", functionName: "dupName"}];
SpreadsheetApp.getActiveSpreadsheet().addMenu("Custom", menu);
}
function dupName() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var totalSheets = ss.getNumSheets();
var lastSheet = ss.getSheets()[totalSheets-1];
var currentSheet = SpreadsheetApp.setActiveSheet(lastSheet);
var templateSheet = ss.getSheetByName("Template");
var getNameFromSheet = ss.getSheetByName("Category");
// var name = Browser.inputBox('Enter new sheet name');
var getNameFromRow = SpreadsheetApp.getActiveSheet().getIndex()-1;
var name = getNameFromSheet.getRange(getNameFromRow, 2).getValue();
var dateCell = getNameFromSheet.getRange(getNameFromRow, 2);
var ui = SpreadsheetApp.getUi();
if (dateCell.isBlank()) {
var result = ui.alert(
'Vse Kategorije so že odprte',
'Ni več možno ustvariti nove kartice!',
ui.ButtonSet.OK);
} else {
ss.insertSheet(name, {template: templateSheet});
}
}
它在上起着魅力的作用
https://docs.google.com/spreadsheets/d/1Kte7OU0WB-u8fDhASWDLQzLJaf7dSRvxUgRfY5pIObg/edit?usp=sharing