긴 처리 시간: getValue() 및 셀 삽입 처리
제공된 코드에서 과도한 처리 시간 문제는 자주 발생하는 문제에서 비롯됩니다. 루프 내에서 Range.getValue() 및 Range.setValue() 메서드 사용. 스크립트가 A 열의 각 셀을 반복하면서 값을 여러 번 읽고 쓰므로 실행 속도가 크게 느려집니다.
코드 최적화
이러한 성능을 해결하려면 문제인 경우 주로 Range.getValue() 및 Range.setValue() 작업 수를 줄이는 데 중점을 두고 서비스 호출을 최소화하는 것이 중요합니다. 코드를 최적화할 수 있는 방법은 다음과 같습니다.
일괄 읽기
range1.getValue()를 사용하여 각 셀의 값을 개별적으로 검색하는 대신 모든 셀의 값을 읽습니다. 한 번의 배치 작업에 필요한 셀. 예를 들어, 현재 행과 다음 세 행의 값이 필요한 경우 s.getRange(row 1, 1, 4, 1).getValues()를 사용하여 한 번에 모두 검색할 수 있습니다.
일괄 쓰기
마찬가지로 개별 셀의 값을 설정하는 대신, 써야 할 값을 모두 모아서 그런 다음 이를 하나의 일괄 작업으로 할당합니다. 예를 들어 현재 행과 다음 세 행에 값을 쓰려면 range1.offset(0, 0, 4).setValues([["data 1"], ["data 2"], ["데이터 3"], ["데이터 4"]]);
최적화의 예
다음은 이러한 최적화를 통합한 최적화된 코드 버전입니다.
function format() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = ss.getActiveSheet(); var lastRow = s.getRange("A:A").getLastRow(); var allValues = s.getRange(1, 1, lastRow, 1).getValues(); // Loop through all rows in the spreadsheet for (var row = 0; row < lastRow; row++) { var cellValue = allValues[row][0]; if (typeof cellValue === 'number') { continue; } } }
이러한 최적화를 사용하여 을 사용하면 서비스 호출 수를 크게 줄이고 스크립트 성능을 향상시킬 수 있습니다. 이 접근 방식을 사용하면 루프당 서비스 호출 수가 8개에서 단 2개로 줄어들어 처리 시간이 크게 단축됩니다.
위 내용은 빈번한 `getValue()` 및 `setValue()` 호출로 인해 발생하는 긴 처리 시간을 줄이기 위해 Google Apps 스크립트를 최적화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!