2017-04-18 1 views
0

월별로 생성 된 Google 시트가 있으므로 현재 월의 시트를 특정 폴더에 복사 한 다음 새 스프레드 시트의 셀에 늙은. 잘 작동한다.스프레드 시트 Google 스크립트의 수동 복사 방지

'사본 만들기'메뉴 항목을 사용하여 수동으로 스프레드 시트를 복사하려고하면 제공된 사용자 정의 메뉴 항목을 대신 사용하여 사용자에게 경고하는 해결책을 제시하려고합니다.

셀에 플래그를 설정하는 것에 대해 생각했지만 수동 복사본에서도 플래그를 복사하기 때문에 처음에는 작동합니다. 파일을 수동으로 복사 할 때이를 감지 할 수 있으면 플래그를 재설정하고 onOpen에 대해 테스트 할 수 있습니다.

누군가 올바른 방향으로 나를 가리킬 수 있습니까? 불행히도 사용자는 문서를 편집 할 수 있어야하므로 파일 메뉴에서 옵션을 비활성화 할 수 있다고 생각하지 않습니다.

많은 감사

답변

2

당신이 특정 문제 해결할 수 있습니다 :

내가 셀에 플래그를 설정하는 생각을하지만, 물론 그 또한 수동 복사본으로 처음에만 작품, 플래그를 복사합니다.

PropertiesService을 사용하면 문서 속성을 사용하여 특정 문서에 속성을 추가 할 수 있습니다. 이 속성은 특정 문서에서 모든 사용자가 실행하는 스크립트로 액세스 할 수 있습니다.

그러나 문서를 복사하면 속성이 복사되지 않습니다. onOpen 중에이 속성을 찾아 문서가 원하는대로 복사되었는지 확인할 수 있습니다.

당신은 같은 것을 할 수 있습니다

function setProp(){    //use this to set the property to the document 
var docProp = PropertiesService.getDocumentProperties(); 
    docProp.setProperty("Copied", "false")    //Properties are stored as text immaterially of the type of value you pass to it! 
} 

function getProp(){    //use this to check if the property of the document was set, if set will return true, else false 
    var docProp = PropertiesService.getDocumentProperties(); 
    Logger.log(docProp.getProperty("Copied")) 
    return docProp.getProperty("Copied") == "false" 

} 

function onOpen(e){      
var ui = SpreadsheetApp.getUi() 
if(getProp()){      // Check to see if the property was set for the sheet. 
    ui.alert("Copied correctly") 
} else {        // This will trigger each time they open the sheet, 
    ui.alert("Copied Incorrectly, please use custom function to make a copy") 
} 
} 

희망을!

+0

문서 ID가 "합법적 인"사본에 저장되어있는 것과 비슷한 것을 구현했지만이 답변으로는 충분합니다. Google이 미래에 문서 속성을 포함하도록 복사를 변경했다면 문서 별 특정 솔루션과 같은 것이 필요할 것입니다. – Jonathon