Google电子表格确定一行单元格中的最小数字

时间:2014-03-26 13:20:48

标签: javascript arrays google-apps-script comparison

我是这个网站的新手,主要目的是我计划从事编程工作。我在一家工程公司找到了我的第一份工作,他要求我建立一个系统,让他们可以轻松确定提交工作和完成工作之间的时间。我们现在正在使用电子表格文档来完成某些部分。

我希望在Google文档中创建一个自定义函数,它允许我遍历行C中的值数组,然后将其与调用函数的数字进行比较,将数字与数字进行比较在数组中,给我哪一个是较小的数字。 编辑:该函数将在另一张名为"解析数据"位于同一个项目文件中。它的目的是自动提交当前项目的订单号(仅仅是为了组织起来)我计划实施的所有其他功能都将基于这个订单号是正确的。

到目前为止,我已经收集了这么多(我在飞行中学习这个因为我还缺乏经验,所以请耐心等待。)

{
/**created by Alexander Bickford for use at Double E Company
*sorts through a range of values to determine the lowest next value
*returns lowest determined value of next cell
*/  
//List Of To Be Implemented Functions
// sheet.appendRow 

function setValue(num)
  {
    var ss = SpreadsheetApp.getActiveSpreadsheet('parsed data');
    var ss = ss.getSheets()[0];
    var myRange = ss.getRange("C:C").getValues();
    newValues = [];
    for(i=1;i<=myRange;i++)    //Loop to traverse the C range and find the lowest value.
    {
       if(num<=range[3][i])
       {
       }
       else 
         num = range[3][i];
    } 
    return num;
  }
}

当我在电子表格中调用该函数时,我收到错误消息,说: 错误:ReferenceError:&#34; SPREADSHEET_ID_GOES_HERE&#34;没有定义。 (第8行,文件&#34;代码&#34;)

Google预先定义了顶部的一些功能:

/**

 * Retrieves all the rows in the active spreadsheet that contain data and logs the
 * values for each row.
 * For more information on using the Spreadsheet API, see
 * https://developers.google.com/apps-script/service_spreadsheet

function readRows() {                       <---Line 8 in the file
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  for (var i = 0; i <= numRows - 1; i++) {
    var row = values[i];
    Logger.log(row);
  }
};


 * Adds a custom menu to the active spreadsheet, containing a single menu item
 * for invoking the readRows() function specified above.
 * The onOpen() function, when defined, is automatically invoked whenever the
 * spreadsheet is opened.
 * For more information on using the Spreadsheet API, see
 * https://developers.google.com/apps-script/service_spreadsheet

function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{
    name : "Read Data",
    functionName : "readRows"
  }];
  sheet.addMenu("Script Center Menu", entries);
};
End Code I don't need */ 

我认为它与之前的行有关(我指出第8行)。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

下面的代码对我来说很好。

var ss = SpreadsheetApp.getActiveSheet();
var myRange = ss.getRange("C:C").getValues();
newValues = [];
for(i=1;i<=myRange.length;i++)
{
    Logger.log(myRange[i]);   
} 

答案 1 :(得分:0)

查看您的代码,您似乎遇到了一些问题。

  1. 你似乎在混淆&#34; sheet&#34;使用&#34;电子表格&#34;,以及您的冗余声明&#34; ss&#34;作为一个变量必然会给你带来一些问题。

  2. 您似乎在传递不正确方法的参数。我之前使用Google App脚本时遇到了同样的问题。围绕Google的文档花了很多时间(你应该真正看一下:https://developers.google.com/apps-script/)。你似乎犯了同样的错误,按类比编码。查看Google的示例代码并尝试复制一定会让您遇到麻烦。

  3. 一些有用的建议:

    1. 最令人困惑的事情是结构:电子表格&gt;&gt;工作表&gt;&gt;范围,你必须明确地处理顶部的那个,然后再转到上面的那个底部。
    2. 删除解析后的数据&#39;来自getActiveSpreadsheet()的参数,它应该是空白的。你想要使用的是&#34; getSheetByName(&#34;解析数据&#34;)&#34;并将其传递给工作表变量。
    3. 在你的for循环中,你还需要使用&#34; .length&#34;方法,或使用&#34; .getLastRow()&#34;使用工作表对象查找工作表中的最后一行的方法。
    4. 您的代码可能如下所示:

      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet1 = ss.getSheetByName("parsed data");
      var endRowNumber = sheet1.getLastRow();
      //insert rest of code