ダイナミックレンジに基づいてPROPAGATEFORMULAE関数(以下のコードを参照)を実行しようとしています(つまり、私の行数と列数が変化している可能性が高い)。ダイナミックレンジに基づいて関数を呼び出す方法は?
私はこれを実行するたびにスクリプトを実行しますが(execution transcript参照)、PROPAGATEFORMULAE関数は呼び出されていないようです。私は何が間違っているのか分かりません。この関数は、STATICの値をその範囲に設定するたびに機能しますが、それらを動的に保ちたいと思います。
cols, currentSheet
の場合:
function myFunction() {
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Looping columns");
var lastrow = sh.getLastRow();
var numrows = lastrow;
var lastcol = sh.getLastColumn();
var numcols = lastcol;
var range = sh.getRange(1,1,numrows,numcols);
sh.setActiveRange(range);
return propagateFormulae(range);
}
function getCellFromSheet(row,col,sheet){
return SpreadsheetApp.getActiveSpreadsheet().getSheets()[sheet].getRange(row,col);
}
function propagateFormulae(rows, cols, currentSheet){
for(var i=1;i<=cols;i++){
for(var j=2;j<=rows;j++){
if(getCellFromSheet(j,i,currentSheet).getValue().length == 0)
getCellFromSheet(j-1,i,currentSheet).copyTo(getCellFromSheet(j,i,currentSheet));
else{
j=rows;
}
}
}
}
をしかしRANGE変数がすでにrowsとcolsを定義しています。すでにRangeで定義されている行、列、シートを追加するのは余分でしょうか? –
@ G.T。あなたが 'function propagateFormulae(rows、cols、currentSheet)'として関数を定義し、 'rows'、' cols'と 'currentSheet'の変数を送信するはずですが、まだ'範囲オブジェクト。つまり、あなたの関数は、 'cols'と' currentSheet'が何であるかをあなたの関数が知らないので、あなたの関数が 'rangeオブジェクト'、 'cols undefined'と' currentSheet as undefined'を持っていますが、 – Vytautas