簡體   English   中英

Google 應用程序腳本隨機 - 例外:參數無效:名稱 - 命名重命名表時

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM