![](/img/trans.png)
[英]Problem in formulas while applying protection using app script in Google Sheets
[英]Google app script random - Exception: Argument non valide : name - while naming renaming sheets
您好,感謝您的幫助,
我正在制作一個小代碼來將一些數據從電子表格復制到另一個指定的數據。 為了排列新電子表格中的所有數據,我需要將它放在不同的工作表中,並帶有參考名稱。
創建新工作表(通過副本)並要重命名時會發生錯誤。 這在大多數情況下都可以正常工作,但並非總是如此,這當然是一個問題。 它告訴我錯誤是第 49 行tss.getSheets()[i].setName(ref[i]);
,它是:
Exception: Invalid argument : name
這很奇怪,因為所有工作表的名稱幾乎相同,例如S36779
可以工作,但S36780
不行。
見下面的代碼(它沒有完成,但工作表重復部分是)
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
循環復制和重命名新工作表中,我使用了:
for (var i = 0; i < lrow; i++){
lrow 是我需要的最后一個引用的行號。 這不好,因為它不等於數組長度,所以它崩潰了。
相反,我必須使用 ref.length,ref 是基於 lrow 的引用數組。
for (var i = 0; i < ref.length; i++){
感謝所有回答的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.