그래서 VBA에서 많은 작업을 한 후에 처음으로 Google 스크립트로 작업하고 있습니다. 코드를 실행할 때 스크립트가 실행되는 데 너무 오래 걸린다는 메시지가 나타납니다. .getValue() 및 .setValue()와 같은 특정 부분은 문제를 유발하지만 더 나은 최적화를 위해 코드를 다시 작성하는 방법을 모르겠습니다. 이 리팩토링하는 가장 좋은 방법에Google Scripts 런타임 최적화
function getPredictions() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var Carter = ss.getSheetByName("Carter");
var back = ss.getSheetByName("Back");
var monthsLeft= Carter.getRange(13,15)
var months = monthsLeft.getValue();
var total = 0;
Carter.getRange("d2").setValue(months);
for(var i = 13;Carter.getLastRow(); i++){
if(Carter.getRange(i, 2).getValue() != ""){
total = 0;
var k = 17;
monthsLeft = Carter.getRange(i,15).getValue();
for(var j = 2; j<29; j++){
if(back.getRange(j, 2).getValue() <= monthsLeft){
total = total + back.getRange(j, 3).getValue();
Carter.getRange(i,k).setValue((back.getRange(j, 3).getValue()/Carter.getRange(i,16).getValue()) * Carter.getRange(i,11).getValue());
k++;
}
}
}
}
}
function getMonthsL() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var Carter = ss.getSheetByName("Carter");
for(var i = 13; i < Carter.getLastRow(); i++){
if(Carter.getRange(i, 2).getValue() != ""){
Carter.getRange(i,15).setFormula('=if(day($B$5)>20,DATEDIF($B$5,I' +i + ',"M"),DATEDIF($B$5,I' +i+',"M")+1)');
}
}
}
function getMonthP(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var Carter = ss.getSheetByName("Carter");
var back = ss.getSheetByName("Back");
var total = 0;
for(var i = 13; i < Carter.getLastRow(); i++){
total = 0;
if(Carter.getRange(i, 2).getValue() != ""){
for(var j = 2; Carter.getRange(i,15).getValue() >= back.getRange(j,2).getValue(); j++){
total = total + back.getRange(j,3).getValue();
}
Carter.getRange(i,16).setValue(total);
}
}
}
function runAll(){
getMonthsL();
getMonthP();
getPredictions();
}
어떤 도움/설명 주시면 감사하겠습니다 : 다음은 코드입니다.
개별 셀 값을 가져 오는 대신 [getValues ()] (https://developers.google.com/apps-script/reference/spreadsheet/range#getValues ())를 사용하여 자연스러운 그리드에서 데이터를 가져 와서 액세스하십시오. 값은 [배열 인덱스] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Indexed_collections#Multi-dimensional_arrays)를 사용합니다. 또한 일부 [모범 사례] (https://developers.google.com/apps-script/guides/support/best-practices) –