>웹 프론트엔드 >JS 튜토리얼 >빈번한 `getValue()` 및 `setValue()` 호출로 인해 발생하는 긴 처리 시간을 줄이기 위해 Google Apps 스크립트를 최적화하려면 어떻게 해야 합니까?

빈번한 `getValue()` 및 `setValue()` 호출로 인해 발생하는 긴 처리 시간을 줄이기 위해 Google Apps 스크립트를 최적화하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-08 09:00:23680검색

How Can I Optimize Google Apps Script to Reduce Long Processing Times Caused by Frequent `getValue()` and `setValue()` Calls?

긴 처리 시간: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.