Google 随机应用程序脚本 - 异常:参数无效:名称 - 命名重命名工作表时
Google app script random - Exception: Argument non valide : name - while naming renaming sheets
您好,感谢您的帮助,
我正在编写一个小代码来将一些数据从一个 spreadsheet 复制到另一个指定的 spread。
要在新的传播sheet 中安排所有数据,我需要将其放在不同的 sheet 中,并带有引用名称。
当(通过复制)创建新的 sheet 并将重命名时,会发生错误。
这在大多数时候都运行良好,但并非总是如此,这当然是一个问题。
它告诉我错误是第 49 行 tss.getSheets()[i].setName(ref[i]);
,它是:
Exception: Invalid argument : name
这很奇怪,因为所有 sheet 的名称几乎相同,例如 S36779
有效,但 S36780
无效。
看下面的代码(还没有完成,但是 sheet 重复的部分是)
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('Fiche Produit')
.addItem('Créer une fiche produit','creaficheproduit')
.addSeparator()
.addToUi();
}
function creaficheproduit() {
var tss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = tss.getSheets();
for (i = 0; i < sheets.length-1; i++) {
tss.deleteSheet(sheets[i+1]);
}
var tsh = tss.getSheets()[0];
var ui = SpreadsheetApp.getUi();
var prompt = ui.prompt('Indiquer le lien de la Fiche CS source', 'lien',ui.ButtonSet.OK_CANCEL)
var response = prompt.getResponseText();
var button = prompt.getSelectedButton();
if (button == ui.Button.OK) {
var sss = SpreadsheetApp.openByUrl(response);
var ssh = sss.getSheetByName('Fiche_eclate_CS');
var lrow = getFirstEmptyRowByColumnArray (ssh,"D");
var ref = ssh.getRange("D3:D"+lrow).getValues();
var gamme = ssh.getRange(7,3).getValue();
tsh.getRange(2,6).setValue(gamme);
var dtotal = ssh.getRange(6,7).getValue();
var htotal = ssh.getRange(7,7).getValue();
var dAJ = ssh.getRange(9,7).getValue();
var hAJ = ssh.getRange(10,7).getValue();
tsh.getRange(4,7).setValue(dtotal + " - h" + htotal);
tsh.getRange(5,7).setValue(dAJ + " - h" + hAJ);
for (var i = 0; i < lrow; i++){
if(i == 0){
tss.getSheets()[0].setName(ref[i]);
}
else {
tss.duplicateActiveSheet();
tss.getSheets()[i].setName(ref[i]);
}
}
for (var i = 0; i < lrow; i++){
var sh = tss.getSheets()[i];
sh.getRange(3,6).setValue(ref[i]);
}
}
else{
}
}
function getFirstEmptyRowByColumnArray(sheet,row) {
var column = sheet.getRange(row + "3:" + row);
var values = column.getValues();
var ct = 0;
while ( values[ct] && values[ct][0] != "" ) {
ct++;
}
return (ct);
}
欢迎询问更多详情。
提前致谢,
我发现了错误,这是一个错误...
在 For
循环中复制并重命名新的 sheet,我使用了 :
for (var i = 0; i < lrow; i++){
lrow 是我需要的最后一个引用的行号。这样不好,因为不等于数组长度,所以崩溃了。
相反,我必须使用 ref.length,ref 是基于 lrow 的引用数组。
for (var i = 0; i < ref.length; i++){
感谢所有回答的人。
您好,感谢您的帮助,
我正在编写一个小代码来将一些数据从一个 spreadsheet 复制到另一个指定的 spread。 要在新的传播sheet 中安排所有数据,我需要将其放在不同的 sheet 中,并带有引用名称。
当(通过复制)创建新的 sheet 并将重命名时,会发生错误。
这在大多数时候都运行良好,但并非总是如此,这当然是一个问题。
它告诉我错误是第 49 行 tss.getSheets()[i].setName(ref[i]);
,它是:
Exception: Invalid argument : name
这很奇怪,因为所有 sheet 的名称几乎相同,例如 S36779
有效,但 S36780
无效。
看下面的代码(还没有完成,但是 sheet 重复的部分是)
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('Fiche Produit')
.addItem('Créer une fiche produit','creaficheproduit')
.addSeparator()
.addToUi();
}
function creaficheproduit() {
var tss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = tss.getSheets();
for (i = 0; i < sheets.length-1; i++) {
tss.deleteSheet(sheets[i+1]);
}
var tsh = tss.getSheets()[0];
var ui = SpreadsheetApp.getUi();
var prompt = ui.prompt('Indiquer le lien de la Fiche CS source', 'lien',ui.ButtonSet.OK_CANCEL)
var response = prompt.getResponseText();
var button = prompt.getSelectedButton();
if (button == ui.Button.OK) {
var sss = SpreadsheetApp.openByUrl(response);
var ssh = sss.getSheetByName('Fiche_eclate_CS');
var lrow = getFirstEmptyRowByColumnArray (ssh,"D");
var ref = ssh.getRange("D3:D"+lrow).getValues();
var gamme = ssh.getRange(7,3).getValue();
tsh.getRange(2,6).setValue(gamme);
var dtotal = ssh.getRange(6,7).getValue();
var htotal = ssh.getRange(7,7).getValue();
var dAJ = ssh.getRange(9,7).getValue();
var hAJ = ssh.getRange(10,7).getValue();
tsh.getRange(4,7).setValue(dtotal + " - h" + htotal);
tsh.getRange(5,7).setValue(dAJ + " - h" + hAJ);
for (var i = 0; i < lrow; i++){
if(i == 0){
tss.getSheets()[0].setName(ref[i]);
}
else {
tss.duplicateActiveSheet();
tss.getSheets()[i].setName(ref[i]);
}
}
for (var i = 0; i < lrow; i++){
var sh = tss.getSheets()[i];
sh.getRange(3,6).setValue(ref[i]);
}
}
else{
}
}
function getFirstEmptyRowByColumnArray(sheet,row) {
var column = sheet.getRange(row + "3:" + row);
var values = column.getValues();
var ct = 0;
while ( values[ct] && values[ct][0] != "" ) {
ct++;
}
return (ct);
}
欢迎询问更多详情。
提前致谢,
我发现了错误,这是一个错误...
在 For
循环中复制并重命名新的 sheet,我使用了 :
for (var i = 0; i < lrow; i++){
lrow 是我需要的最后一个引用的行号。这样不好,因为不等于数组长度,所以崩溃了。
相反,我必须使用 ref.length,ref 是基于 lrow 的引用数组。
for (var i = 0; i < ref.length; i++){
感谢所有回答的人。