首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >脚本google错误

脚本google错误
EN

Stack Overflow用户
提问于 2016-11-18 23:27:36
回答 2查看 33关注 0票数 0

我在代码中得到了这个错误:

TypeError:无法在对象2066中找到函数子字符串。(第50行,归档“代码”)

下面这个更具体一点:

if (InputString.substring(0, 10) = "[DUPLIKAT ")

下面是脚本:

代码语言:javascript
复制
function onOpen() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries =
      [
       // {name : "Längen berechnen", functionName : "CountCellLength"}
      ];
  
  spreadsheet.addMenu("Script Menü", entries);
};


function CountCellLength()
{
  
  /*
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ssCurrent = ss.getActiveSheet();
  
  if (ss.getActiveSheet().getName() != "Duplikate")
  {
    Browser.msgBox("Not designed for this sheet.");
    return;
  }

  var RowCount = ss.getLastRow();
  var CurrentRow = ss.getActiveCell().getRow();
  var cellValue;


  for (var i = 5; i < RowCount; i++) {
    cellValue = ssCurrent.getRange(i, 2, 1, 1).getValue();
    
        ssCurrent.getRange(i, 5).setValue(cellValue.length);
  }
  
  */
  
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Duplikate");
  var RowCount= ss.getLastRow();
  var InputRange = ss.getRange(5, 2, RowCount-4);
  var data = InputRange.getValues();
  var InputString, OutputString;
  var StringNumber;

  
  for (var i = 0; i < RowCount; i++) {
    
    InputString = data[i][0];
    
    if (InputString.substring(0, 10) = "[DUPLIKAT ")
    {
      OutputString = ""
    } else {
      OutputString = InputString
    }
    
    OutputString = OutputString.replace("(nl)", "");
    OutputString = OutputString.replace("(nb)", "");
    OutputString = OutputString.replace("<$06><$00>", "HELDNAME");
    OutputString = OutputString.replace("<$06><$01>", "BURGNAME");
    OutputString = OutputString.replace("<$07><$00><$02>", "XXX");
    
    /*
    for (var j = 0 ; j < 256 ; j++)
    {
      StringNumber = j.toString(16);
      
      if (StringNumber.length == 1)
      {
        StringNumber = "0" + StringNumber.toUpperCase();
      } else {
        StringNumber = StringNumber.toUpperCase();
      }
      OutputString = OutputString.replace("<$" + StringNumber + ">", "");
    }
*/
    //ss.getRange(i+5, 5).setValue(OutputString);
    ss.getRange(i+5, 6).setValue(OutputString.length);
    
  }
}


function InsertDuplicate()
{
  //Festlegen des aktuellen Spreadsheets
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  //Das derzeit geöffnete Sheet
  var ssCurrent = ss.getActiveSheet();
  //Unser Duplikat Sheet
  var ssDuplicates = ss.getSheetByName("Duplikate");
  //Andere Variabeln
  var DuplicateInfo, DuplicateIndexRow, DuplicateNumber;
  var DuplicateRow;

  
  //Festlegen der Position, in der wir uns befinden
  ssCurrentColumn = ssCurrent.getActiveCell().getColumn();
  
  //Wenn wir nicht in der ersten Spalte sind, verlassen wir die Funktion
  if (ssCurrentColumn != 1) {
    return;
  }
  
  //Zelleninhalt abrufen und auf DUPLIKAT püfen
  DuplicateInfo = ssCurrent.getActiveCell().getValue();
  if (DuplicateInfo.substring(10, 0) == "DUPLIKAT: ")
  { DuplicateIndexRow = DuplicateInfo.substring(14,10);
  } else {
    return;
  }
  

  DuplicateRow = ssDuplicates.getRange(DuplicateIndexRow, 7).getValue();
  
  Browser.msgBox(DuplicateRow);
  //Browser.msgBox(DuplicateRow);
  
  
  

  //Browser.msgBox("End reached!!!");
}

EN

回答 2

Stack Overflow用户

发布于 2016-11-18 23:35:36

就像错误说的那样。您的InputString变量不是您所认为的那样。它是一个javascript 对象,而不是一个字符串。

Javascript与对象一起工作,因此(一开始很奇怪)字符串也是一个具有所谓方法(特定对象类型的助手函数)的对象。字符串对象确实包含子字符串方法,但“对象对象”不包含子字符串方法。

为了帮助你解决这个问题。您能否使用console.log将该变量登录到控制台,这样我们就知道该变量包含了什么?

票数 0
EN

Stack Overflow用户

发布于 2016-11-18 23:37:42

我看到了两个问题,但它们可能不是唯一的问题:

substring只在字符串上工作,所以如果从电子表格读取的值是数字,那么它将失败,正如您可以看到的那样。

若要强制将值强制为字符串,您可以代替:

代码语言:javascript
复制
InputString = data[i][0];

用途:

代码语言:javascript
复制
InputString = data[i][0] + '';

与空字符串相连接将强制数字结果值为字符串。

第二:

if (InputString.substring(0, 10) = "[DUPLIKAT ")不是等号的正确用法:

  • 单等于,=赋值,例如,当您将值放入变量时
  • ==相等,用于比较两个值。

在上面的if语句中,您希望比较两个值,看看左边的值是否等于"[DUPLIKAT "。因此,您需要两个等于(如果您愿意的话,三个等于是一个要查看的主题):

if (InputString.substring(0, 10) == "[DUPLIKAT ")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40687483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档