Google App Script + Google Sheet - 遍历活动 sheet 中的每个单元格并添加带有本地单元格地址的公式

Google App Script + Google Sheet - Loop over each cell in active sheet and add formula with local cell address

我四处搜索了一下,但无法完全 find/break 区分完成这项工作所需的信息。抱歉,如果确实已经有一个有效的问题。

我需要:

更全面的了解

我有标准的 sheet grab,效果很好:

var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var rangeList = activeSheet.getRange(['A1:AA69']);

我已经从其他变量构建了我的公式,这些变量很容易组合在一起:

// Create a combined formula from above variables, at present the only part missing is the cell to inject this into and closing parenthesis.
var IMPORTRANGE_FORMULACONSTRUCT = IMPORTRANGE_BEGINFORMULA_VALUE + "(" + '"' + SPREADSHEETURLVALUE + '"' + ", " + '"' + IMPORTRANGE_INFORMATIONTAB_VALUE + "!" ;
// Print to Logs (View with Ctrl + Enter)
Logger.log(IMPORTRANGE_FORMULACONSTRUCT);

如何遍历每个单元格并将每个单元格添加到公式的末尾?

感谢帮助。

您可以检索区域中每个单元格的 A1 notation 并将其用作公式中的本地地址。

示例:

function myFunction() {
  var IMPORTRANGE_BEGINFORMULA_VALUE = "=IMPORTRANGE";
  var SPREADSHEETURLVALUE = "my.url.com"
  var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var IMPORTRANGE_INFORMATIONTAB_VALUE = activeSheet.getName();
  var rangeList = activeSheet.getRange('A1:AA69');
  var array=[];
  for( var i = 0; i < rangeList.getLastRow(); i++){
    array[i]=[];
    for( var j = 0; j < rangeList.getLastColumn(); j++){    
      var notation = activeSheet.getRange(i+1,j+1).getA1Notation();
      var notation = rangeList.getCell(i+1,j+1).getA1Notation();
      // Create a combined formula from above variables, at present the only part missing is the cell to inject this into and closing parenthesis.
      var IMPORTRANGE_FORMULACONSTRUCT = IMPORTRANGE_BEGINFORMULA_VALUE + "(" + '"' + SPREADSHEETURLVALUE + '"' + ", " + '"' + IMPORTRANGE_INFORMATIONTAB_VALUE + "!" + notation + '")' ;
      // Print to Logs (View with Ctrl + Enter)
      array[i].push(IMPORTRANGE_FORMULACONSTRUCT);
    }
  }
  rangeList.setValues(array);
}

请记住,如果您在较大范围内迭代,此代码可能会很慢。