Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script “移动”;主动的;Google Sheet宏语言中的单元格_Google Apps Script_Google Sheets_Google Sheets Macros - Fatal编程技术网

Google apps script “移动”;主动的;Google Sheet宏语言中的单元格

Google apps script “移动”;主动的;Google Sheet宏语言中的单元格,google-apps-script,google-sheets,google-sheets-macros,Google Apps Script,Google Sheets,Google Sheets Macros,我试图编写一个函数,从一个表中提取第n列(在示例4中)数据,从某一行/列开始,该行/列的地址定义为变量。我尝试使用偏移量,但使用.getrange()将“活动”单元格移动到第n个位置,并使该单元格成为活动单元格,但宏中止。有人这样做过吗?由于数据的性质,移动“活动”单元格n列非常重要。代码子集如下: function PullSelectedData() { // var GeneralDataFirstLocation = "D4"; //data starting point cel

我试图编写一个函数,从一个表中提取第n列(在示例4中)数据,从某一行/列开始,该行/列的地址定义为变量。我尝试使用偏移量,但使用.getrange()将“活动”单元格移动到第n个位置,并使该单元格成为活动单元格,但宏中止。有人这样做过吗?由于数据的性质,移动“活动”单元格n列非常重要。代码子集如下:

function PullSelectedData() {

//

var GeneralDataFirstLocation = "D4";   //data starting point cell D4

var ColumnsBetweenSeries = 4;          //want data from each of the 4 columns (e.g.; D4, H4, L4, P4....)

var ReturnedValue = 0;

//

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

var BondCheckSS = spreadsheet.getSheetByName("BONDCHECKSHEET");

//

  for (var i = 0; i <= 3; i++) {

      BondCheckSS.getRange(GeneralDataFirstLocation).Offset(0, ColumnsBetweenSeries * i).activate();

      ReturnValue = getActiveCell().getValue();

  }

}
函数PullSelectedData(){
//
var GeneralDataFirstLocation=“D4”//数据起始点单元格D4
var ColumnsBetweenSeries=4;//希望从4列中的每一列(例如:D4、H4、L4、P4……)获取数据
var ReturnedValue=0;
//
var电子表格=SpreadsheetApp.getActiveSpreadsheet();
var BondCheckSS=spreadsheet.getSheetByName(“BONDCHECKSHEET”);
//
对于(var i=0;i)它崩溃的原因
  • 第一个问题是,
    Offset
    不是一个函数,所以它应该是,尽管您对函数的参数是正确的,所以这个问题得到了解决
  • 下一个问题是
    getActiveCell
    本身不是一个函数,必须在工作表上调用它。例如
  • 第三个问题不会导致代码崩溃,但允许您使用
    ColumnsBetweenSeries
    变量,它将循环更改为
    for(var i=0;i
不想要的行为 在这一点上,您的代码现在运行良好,不再崩溃,但仍然存在一个问题,它没有完全实现您希望它做的事情

函数PullSelectedData(){
var GeneralDataFirstLocation=“D4”//数据起始点单元格D4
var ColumnsBetweenSeries=4;//希望从4列(D4、H4、L4、P4)中的每一列获取数据
var ReturnedValue=0;
var电子表格=SpreadsheetApp.getActiveSpreadsheet();
var BondCheckSS=spreadsheet.getSheetByName(“BONDCHECKSHEET”);
对于(变量i=0;i<系列之间的列;i++){
BondCheckSS.getRange(GeneralDataFirstLocation).offset(0,系列之间的列*i).activate();
ReturnedValue=BondCheckSS.getActiveCell().getValue();
}
}
主要的问题是,
ReturnedValue
在循环的每次迭代中都会被覆盖。因此我们需要将它添加到每次迭代的总数中,或者我们可以将它们全部放在一个列表中,以便以后进行进一步的处理

如果我们希望将每个单元格的值添加到总数中,那么在循环中设置
ReturnedValue
的行将变为

ReturnedValue+=BondCheckSS.getActiveCell().getValue();

如果我们想将所有元素都放在一个列表中,我们可以使用append函数将每个元素添加到一个列表中,
MyList.append(valueToAppend)
,在这种情况下,声明
ReturnedValue
如下所示:

var ReturnedValue=[];

在循环内部,设置
ReturnedValue
变成以下内容,将每个值添加到列表的末尾

ReturnedValue.append(BondCheckSS.getActiveCell().getValue());

求和示例
函数PullSelectedData(){
var GeneralDataFirstLocation=“D4”//数据起始点单元格D4
var ColumnsBetweenSeries=4;//希望从4列(D4、H4、L4、P4)中的每一列获取数据
var ReturnedValue=0;
var电子表格=SpreadsheetApp.getActiveSpreadsheet();
var BondCheckSS=spreadsheet.getSheetByName(“BONDCHECKSHEET”);
对于(变量i=0;i<系列之间的列;i++){
BondCheckSS.getRange(GeneralDataFirstLocation).offset(0,系列之间的列*i).activate();
ReturnedValue+=BondCheckSS.getActiveCell().getValue();//注意从=到的更改+=
}
}
列表示例
函数PullSelectedData(){
var GeneralDataFirstLocation=“D4”//数据起始点单元格D4
var ColumnsBetweenSeries=4;//希望从4列(D4、H4、L4、P4)中的每一列获取数据
var ReturnedValue=[];//注意从0到[]的变化
var电子表格=SpreadsheetApp.getActiveSpreadsheet();
var BondCheckSS=spreadsheet.getSheetByName(“BONDCHECKSHEET”);
对于(变量i=0;i<系列之间的列;i++){
BondCheckSS.getRange(GeneralDataFirstLocation).offset(0,系列之间的列*i).activate();
ReturnedValue.append(BondCheckSS.getActiveCell().getValue());//我们现在将每个值追加到列表中,而不是每次都覆盖它
}
}//ReturnedValue现在由D4、H4、L4和P4的值填充,例如:[10、20、30、40]