1

Google 문서 도구를 사용하는 것이 상당히 새로운데, 정말 고맙게 생각합니다. 스크립팅은 단순한 작업을 수행하는 데는 매우 쉽지만, 잠깐 실망 할 수있는 잠재적 인 속도 문제를 인식하게되었습니다.Google 스프레드 시트가 스크립트를 통해 자동 저장을 사용 중지합니까?

나는 사업장에서 특정 자료의 비용을 계산하는 데 필요한 사업장을 가지고 있습니다. 그것은 훌륭하게 작동하지만 작업 사이를 지우는 것은 약간 지루했기 때문에 내가 비워야하는 범위 (나와 정의 된 범위)를 지우는 간단한 스크립트를 작성했습니다.

다시 한번 훌륭한 결과를 얻었습니다. 유일한 문제는 몇 가지 범위 (7 개)를 지우는 것이 약 10 초 걸리는 것입니다. 필자는 각 범위가 지워진 후에 스프레드 시트가 저장되기 때문에 이는 시간 집약적 인 작업이라고 믿습니다.

스크립트에서 자동 저장을 비활성화 한 다음 범위를 지운 후에 다시 활성화하여이 이론을 테스트하고 싶습니다. 이것이 API의 기능을 보지 못했기 때문에 이것이 가능한지 나는 모른다. 그러나 그것에 관해서는 알고 싶다.


편집 : 이것은 내가 사용하고있는 기능입니다. 더 간결하고 API 호출 집약적으로하기 위해 몇 번 다시 작성해 보았습니다.하지만 지금까지는 호출을 처리하는 데 걸리는 시간을 줄이는 데 아무런 행운이 없었습니다.

function clearSheet() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 
    sheet.getRange("client").clear(); 
    sheet.getRange("lm_group_1").clear({contentsOnly:true}); 
    sheet.getRange("lm_group_2").clear({contentsOnly:true}); 
    sheet.getRange("dr_group_1").clear({contentsOnly:true}); 
    sheet.getRange("dr_group_2").clear({contentsOnly:true}); 
    sheet.getRange("fr_group_1").clear({contentsOnly:true}); 
    sheet.getRange("fr_group_2").clear({contentsOnly:true}); 
    sheet.getRange("gr_group_1").clear({contentsOnly:true}); 
    sheet.getRange("client_name").activate(); 
} 

답변

1

이는 불가능하며 결코 그렇지 않을 수도 있습니다. Google 문서 도구는 "자연"이 아닙니다.

하지만 스크립트 작성 방법에 따라 모든 변경 사항이 이미 한 번에 작성 될 가능성이 큽니다. 스프레드 시트에 글쓰기를 강제하는 일부 API 호출이 있습니다 (예를 들어 글을 읽은 후 읽으려는 것처럼).하지만 코드를 확인해야합니다.

어쨌든 스프레드 시트 개정 내역을 확인하여 한 번에 여러 단계에서 완료되었는지 확인할 수 있습니다.

성능에 대해서는 Apps 스크립트의 자연스러운 지연이 불가피하지만 10 초가 아니므로 스크립트를 개선하고 더 적은 API 호출을 사용하고 , setValue 등의 일괄 호출을 선호 할 수 있습니다. 그러나 다시 한번, 우리는 당신의 코드를 확인하고 더 유용한 팁을 주어야 할 것입니다.

+0

원본 스크립트에 현재 스크립트를 추가했습니다. 나는 현재 (너무 많은 API 호출) 서서 그것을 조금 더 우아하게하기 위해 어쨌든 다시 작성할 것이지만, 이것이 진행중인 상태이다. –

관련 문제