重新分配/更新变量

时间:2017-03-30 14:32:45

标签: javascript variables google-apps-script google-sheets

我尝试在网上搜索,但只能找到如何重新分配单元格值。

我的代码的一些背景知识:

输入表包含A到U列中的数据,但R和S列有意为空。我需要设置&仅从列A到Q排序数据范围,每次运行代码时行数可能会更改(因此行索引需要是动态的)。当我运行我的代码时,变量不会更新,我也不会收到任何错误。为什么代码没有为输入数据更新我的变量。任何帮助将不胜感激!

谢谢!

function SortUpdate() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var input = ss.getSheetByName("Input");
  var inputData = input.getDataRange();
  var lastRow = inputData.getNumRows();
  inputData = input.getRange(2, 1, lastRow, 17);
  for(var i = 9; i<=(15);i++){
     inputData.sort({column: i, ascending: false});
  }
}

2 个答案:

答案 0 :(得分:2)

到目前为止,您已为inputData指定了两个不同的范围,但尚未收集任何数据。看看range.getValues()函数implementation

inputData.sort([{column: 9 ascending: false},{column: 10, ascending: false},{column: 11, ascending: false},{column: 12 , ascending: false},{column: 13, ascending: false},{column: 14, ascending: false},{column: 15, ascending: false}]);    

查看您的部分数据会很有帮助。

我查看了range.sort命令和一些示例,我想知道你是否认为它本打算像这样使用:

function SortUpdate() 
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var input = ss.getSheetByName("Input");
  var inputData = input.getDataRange();//This returns a range not data
  var lastRow = inputData.getNumRows();
  inputData = input.getRange(2, 1, lastRow, 17);//The inputData variable has received two assignments which one do you want?
  var dirA=myUtilities.getArrayByName('Params');
  inputData.sort([{column: 9, ascending: dirA.state=='true'},{column: 10, ascending: dirA.state=='true'},{column: 11, ascending: dirA.state=='true'},{column: 12 , ascending: dirA.state=='true'},{column: 13, ascending: dirA.state=='true'},{column: 14, ascending: dirA.state=='true'},{column: 15, ascending: dirA.state=='true'}]);
  dirA['state'] = (dirA['state']=='true')?false:true;
  myUtilities.saveArray('Params', 'DICT', dirA);
}

我将命令放入下面的函数中。你将无法运行它,因为我正在使用我自己的一些实用程序将一个全局变量存储在一个文件中的数组中,以便每次运行它时都可以在true和false之间切换升序参数。但这就是它的样子,它绝对是排序A到Q的列,不包括标题行。

{{1}}

答案 1 :(得分:0)

您可以使用sheet.getLastRow()方法,而不是使用sheet.getDataRange()和sheet.getNumRows(),该方法将返回工作表上最后一行使用的值。有关getLastRow方法的更多信息:https://developers.google.com/apps-script/reference/spreadsheet/sheet#getLastRow()

对于排序方法部分,您可以使用正在工作的Cooper编写的代码,或者向我们发送您想要的类型排序方法的例子。