Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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
Arrays 气体:如何更改相邻列的所有值?(代码不工作)_Arrays_Google Apps Script_Google Sheets - Fatal编程技术网

Arrays 气体:如何更改相邻列的所有值?(代码不工作)

Arrays 气体:如何更改相邻列的所有值?(代码不工作),arrays,google-apps-script,google-sheets,Arrays,Google Apps Script,Google Sheets,我有一个谷歌应用程序脚本,我想用它来做这件事:获取我工作表G列所有单元格的文本,从文本中提取一些数据(文本中的日期),然后将结果放入H列。我可以从原始文本中提取日期。但我不能迭代并将其放入neighbur列(“H”),因为,当我尝试使用此代码时,什么都没有发生。我得到了这个日志: 这是我的代码: function changeNextCell() { var range = SpreadsheetApp.getActiveSheet().getActiveRange(); var nu

我有一个谷歌应用程序脚本,我想用它来做这件事:获取我工作表G列所有单元格的文本,从文本中提取一些数据(文本中的日期),然后将结果放入H列。我可以从原始文本中提取日期。但我不能迭代并将其放入neighbur列(“H”),因为,当我尝试使用此代码时,什么都没有发生。我得到了这个日志:

这是我的代码:

function changeNextCell() {
  var range = SpreadsheetApp.getActiveSheet().getActiveRange();
  var numRows = range.getNumRows();
  for (var i = 2; i <= numRows; i++) {
      var rawText = range.getCell(i,6).getValue();
      var newDate = findDate(rawText);
      range.getCell(i,6).setValue(newDate);
    }  
}


function findDate (text){
  text1 = text.split("Date:");
date = 'no date informed';
for (var i=0; i<text1.length; i++) {
     text2 = text1[i].split(" ");
     if (text2[1] === 'open:'){
         date = text2[2];
     }
  }
  return date;
}
函数changeNextCell(){
var range=SpreadsheetApp.getActiveSheet().getActiveRange();
var numRows=range.getNumRows();

对于(var i=2;i你说你想得到G列上的所有值,但是在代码上你做了一个
getActiveRange
。这个函数只返回你屏幕上选择的值。如果你在运行之前没有手动选择整个G列,它实际上什么都不会做。这与你说的一致

要么就是这样,要么就是你在混合
Range.getCell
的功能。我不确定误解在哪里。希望提供的代码能帮助你理解

最后,一个单元格一个单元格地获取和设置值不是一个好方法,主要是因为它要慢得多。你应该一次获取所有值,循环,然后设置所有值。下面是我的方法:

函数setColumnHfromG(){
var s=SpreadsheetApp.getActiveSheet();
var input=s.getRange(2,7,s.getLastRow()-1,1).getValues();
//我跳过第一排,因为这似乎是你的意图
//此外,我认为(G)列已满。即,我没有检查空单元格
var输出=[];
对于(变量i=0;i
如果要“检测”所选范围的列,但不强制用户选择整个列,可以执行以下操作:

函数setNextColumn(){
var s=SpreadsheetApp.getActiveSheet();
var column=s.getActiveRange().getColumn();
var input=s.getRange(2,列,s.getLastRow()-1,1).getValues();
var输出=[];
对于(变量i=0;i

PS:我相信你的代码< FordDe>/Cuth>函数是正确的,但是如果它不是至少在你得到脚本做某事之后更容易修复它。< / P>这是一个完美的答案。你应该考虑写一本关于GAS的书。我说的很认真。谢谢!BTW已经写了。我刚买了这本书(Kindle).但是我需要它写在纸上(用铅笔做笔记)。所以,我要再买一本!詹姆斯正在写第二版,还有更多更新,我建议你等一会儿:)好消息。我认为它有点过时了(例如表格)。我要买2sd版。