2013-10-11 6 views
0

스프레드 시트 사용자 지정 기능에 대한 설정 캐싱을 시도하고 있지만 결과가 일관되지 않거나 예기치 않은 것으로 보입니다. 때로는 캐시 된 결과를 얻고 때로는 데이터를 새로 고칩니다. 시간 제한을 10 초로 설정했는데 10 초 이내에 새로 고침을하면 때로는 새 데이터를 가져오고 때로는 캐시에 저장합니다. 마지막 호출 이후 10 초 이상 기다린 후에도 때로는 캐시 된 결과를 얻습니다. 스프레드 시트 기능에 왜 그렇게 많은 불일치가 있습니까? (또는 나는 단지 뭔가 잘못하고있는 것입니까?). 실제 스크립트 내에서 함수를 직접 호출하면 훨씬 일관성있는 것으로 보이지만 때로는 일관성이 없거나 예기치 않은 결과가 발생합니다.왜 내 캐싱이 일치하지 않습니까?

function getStackOverflow(){ 
    var cache = CacheService.getPublicCache(); 
    var cached = cache.get("stackoverflow"); 

    if(cached != null) { 
    Logger.log('this is cached'); 
    return 'this is cached version'; 
    } 

    // Fetch the data and create an object. 
    var result = UrlFetchApp.fetch('http://api.stackoverflow.com/1.1/tags/google-apps-script/top-answerers/all-time'); 
    var json = Utilities.jsonParse(result.getContentText()).top_users; 

    var rows = [],data; 

    for (i = 0; i < json.length; i++) { 
    data = json[i].user; 
    rows.push(data.display_name); 
    } 

    Logger.log("This is a refresh"); 
    cache.put("stackoverflow",JSON.stringify(rows),10); 

    return rows; 
} 

답변

0

그런 사용자 정의 기능을 사용할 수 없습니다. 문서화. 사용자 정의 함수는 결정적이어야합니다. 동일한 입력이 주어진 경우 동일한 결과가 항상 나타납니다. (매개 변수를 전달하지 않으므로 아무 것도 입력하지 마십시오.) 스프레드 시트는 기본적으로 yiu 캐시의 두 번째 계층과 같은 각 입력 집합의 값을 기억합니다.

+0

아, 알았어. 기능 자체가 작동하고있어, 단지 캐시가 아닙니다.이 모든 것이 어디서 문서화 되었습니까? –

+0

애플 스크립트 스크립트 문제 페이지의 "문서화 된"부분은 여기를 참조하십시오. https://code.google.com/p/google-apps-script-issues/issues/detail?id=2571 –

+0

제목을 좀 더 구체적으로 변경해야합니다. '사용자 설정 스프레드 시트 기능과 내 캐시가 일치하지 않는 이유는 무엇입니까? ? "또한"now() "와 같은 새롭고 고유 한 매개 변수를 전달하여이 작업을 수행 할 수도 있지만 성능에 영향을 미칩니다. –

관련 문제