两行脚本需要半分钟才能执行



我有一个函数:

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

最新更新