【问题标题】:Google Script ReferenceError function is not definedGoogle Script ReferenceError 函数未定义
【发布时间】:2017-05-02 13:42:11
【问题描述】:

我有一个运行三个函数的脚本(组合)。首先,它将表单响应拆分为行(拆分),然后按字母顺序对响应进行排序(排序),最后删除特定列中包含空白单元格的所有行。我对使用脚本还很陌生,但我认为我有这个工作。现在,当我尝试运行它或调试时,它给出“ReferenceError:“sort”未定义。(第 3 行,文件“Combined”)。我确信有一个相当简单的解释。我为此设置了触发器在表单提交、更改和打开时运行。

有人愿意评论并提供建议吗?其余的似乎都在工作。

function combined() {
  SPLIT();
  sort();
  deleteRows();


function SPLIT() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var sh0 = ss.getSheets()[0], sh1 = ss.getSheets()[1];

  // get data from sheet 2
  var data = sh1.getDataRange().getValues();

  // create array to hold data
  var aMain = new Array();

  // itterate through data and add to array
  // j=3 is the column it starts to loop with, j<9 tells it where to stop.
  // in the aMain.push line, use data[i][j] for the rows to search and put in the one column.
  // in the last line, change the last number to equal the number of columns in your final sheet.
  // the first number in getrange is the row the data starts on... not sure about the 1.
  for(var i=1, dLen=data.length; i<dLen; i++) {
    for(var j=5; j<9; j++) {
      aMain.push([data[i][0],data[i][1],data[i][2],data[i][3],data[i][4],data[i][j]]);
    }


  // add array of data to first sheet
  sh0.getRange(2, 1, aMain.length, 6).setValues(aMain);
}

function sort() {

  /**  Variables for customization:

  Each column to sort takes two variables: 
      1) the column index (i.e. column A has a colum index of 1
      2) Sort Asecnding -- default is to sort ascending. Set to false to sort descending

  **/

  //Variable for column to sort first

  var sortFirst = 3; //index of column to be sorted by; 1 = column A, 2 = column B, etc.
  var sortFirstAsc = true; //Set to false to sort descending

  //Variables for column to sort second

  var sortSecond = 2;
  var sortSecondAsc = true;

    //Variables for column to sort third

  var sortThird = 6;
  var sortThirdAsc = true;//Number of header rows

  var headerRows = 1; 

  /** End Variables for customization**/

  /** Begin sorting function **/

  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var sh0 = ss.getSheets()[0];
  var range = sh0.getRange(headerRows+1, 1, sh0.getMaxRows()-headerRows, sh0.getLastColumn());
  range.sort([{column: sortFirst, ascending: sortFirstAsc}, {column: sortSecond, ascending: sortSecondAsc}, {column: sortThird, ascending: sortThirdAsc},]);


function deleteRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  // get data from the first sheet - the first sheet start with 0, we can also name a specific sheet by name but that's a little different setup.
  var sh0 = ss.getSheets()[0];
  var rows = ss.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  var rowsDeleted = 0;
  for (var i = 0; i <= numRows - 1; i++) {
    var row = values[i];
    if (row[5] == 'delete' || row[5] == '') { // This searches all cells in column (change to row[1] for columns B and so on) and deletes row if cell is empty or has value 'delete'.
      sh0.deleteRow((parseInt(i)+1) - rowsDeleted);
      rowsDeleted++;
    }
  }
}
}
}
}

【问题讨论】:

  • 排序时是否缺少右括号?

标签: google-apps-script referenceerror


【解决方案1】:

不要忘记为您的帐户开启“API GOOGLE APP SCRIPT”:https://script.google.com/u/1/home/usersettings。

如果“API GOOGLE APP SCRIPT”关闭:

  • 您无法在服务器上运行该函数
  • 总是出错

【讨论】:

    【解决方案2】:

    缺少右括号

    function sort() {
    
      /**  Variables for customization:
    
      Each column to sort takes two variables: 
          1) the column index (i.e. column A has a colum index of 1
          2) Sort Asecnding -- default is to sort ascending. Set to false to sort descending
    
      **/
    
      //Variable for column to sort first
    
      var sortFirst = 3; //index of column to be sorted by; 1 = column A, 2 = column B, etc.
      var sortFirstAsc = true; //Set to false to sort descending
    
      //Variables for column to sort second
    
      var sortSecond = 2;
      var sortSecondAsc = true;
    
        //Variables for column to sort third
    
      var sortThird = 6;
      var sortThirdAsc = true;//Number of header rows
    
      var headerRows = 1; 
    
      /** End Variables for customization**/
    
      /** Begin sorting function **/
    
      var ss = SpreadsheetApp.getActiveSpreadsheet();  
      var sh0 = ss.getSheets()[0];
      var range = sh0.getRange(headerRows+1, 1, sh0.getMaxRows()-headerRows, sh0.getLastColumn());
      range.sort([{column: sortFirst, ascending: sortFirstAsc}, {column: sortSecond, ascending: sortSecondAsc}, {column: sortThird, ascending: sortThirdAsc},]);
      
      }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 2023-03-30
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多