2014-09-01 2 views
0

파일에서 활성 사용자 편집기를 제거하는 중에 문제가 발생했습니다. 나는 그것이 잘 작동 follwing을 코드하려고 할 때 :파일 removeEditor 문제 (DriveApp)

function testOwner() { 
    var theFile = DriveApp.createFile('New Text File', 'Hello, world!'); 
    theFile.setOwner('[email protected]'); 
    theFile.removeEditor(Session.getActiveUser().getEmail()); 
} 

을하지만이 'makecopy로'방법을 사용하고 때 편집기가 제거 된 경우에도 스크립트를 중지 메시지 오류가 발생합니다. removeEditor 라인에

function testOwner2() { 
    var template = DriveApp.getFileById(TEMPLATE_ID); 
    var theFile = template.makeCopy('Name'); 
    theFile.setOwner('[email protected]'); 
    theFile.removeEditor(Session.getActiveUser().getEmail()); 
} 

오류 메시지 : 여기에 코드입니다 '불가능 드 trouver 난 요소 correspondant à CET identifiant. 너는 네가 너를 사랑해. ' 의미 '이 ID와 일치하는 요소를 찾을 수 없습니다. 액세스 할 수있는 권한이 부여되지 않았을 수 있습니다. '

이 질문에 대해서는 질문하지 않았습니다. 알려진 문제입니까?

도움 주셔서 감사합니다.

답변

0

.makeCopy() 일 때 새 파일에 대한 모든 편집자가 제거됩니다.

디버그에 도움이뿐만 아니라, 그뿐만 아니라 일반적으로 예기치 않은 결과의 원인이다로

function testOwner2() { 
    var template = DriveApp.getFileById(TEMPLATE_ID); 
    var theFile = template.makeCopy('Name'); 
    theFile.setOwner('[email protected]'); 

    var editors = theFile.getEditors(); 
    for (var i in editors) { Logger.log(editors[i].getEmail()); } 
    Logger.log(Session.getActiveUser().getEmail()); 
    theFile.removeEditor(Session.getActiveUser().getEmail()); 
} 

.getEffectiveUser() 대신 .getActiveUser()을 시도 ... 로거 일부를 사용하고 로그를 볼 수 있습니다.

+0

감사에서 작업을 수행하는 방법을 설명하지만 getEffectiveUser은 내가 처음 생각했던 문제 –

0

이것은 일반적인 사람보다 조금 더 많은 의견을 말하면서 생각합니다.

다른 답변에서 제안 된 코드에 문제가있는 것 같습니다. 편집기가 아닌 다른 사람에게 소유권을 설정하면 자동으로 편집기가 될 수 있습니다. 복사 된 파일의 소유자가 더 이상 ... 당신은 단지 같은 오류 메시지가 나타납니다.

파일을 만드는 첫 번째 코드 단편은 동일한 논리를 따라야하지만 - 오늘 배웠던 (고마워요.) - 정말 그렇지 않습니다.

당신이 에디터하지 않으려면

나는 (적어도 내가 스크립트를 사용하여 상상할 수있는) 유일한 해결책을 생각 (나는 ... 누군가가 "더 나은 정보를"설명 바랍니다) 사본의 사본은 사본에 복사되는 작은 스크립트를 통합하여 새 사용자가 귀하를 편집자로 지우는 기능을 호출 할 수있게합니다.

이상 단순히 결국, 드라이브 UI 자체 ;-) 그에 대한

+1

을 변경하지 않고 첫 번째 코드가 괜찮다고 나는 믿었다 가능했습니다. 나중에 유일한 편집자가되어야하는 다른 사람들이 사용할 새 데이터로 채워진 템플릿에서 파일을 생성하는 연산자가 내 앱을 사용합니다. 너무 나쁘지는 않습니다. 어쨌든 확인해 주셔서 감사합니다. 네, 어떻게 든 놀랍습니다. –

+0

확장 드라이브 서비스를 사용해 볼 수도 있습니다. [permissions] (https://developers.google.com/drive/v2/reference/#Permissions) 및 doc [here]를 참조하십시오. (https://developers.google.com/apps-script/advanced/drive) –

+0

죄송합니다. 귀하의 제안을 놓쳐 버렸습니다. 나는 그것을 시도 할 것이다. 감사 –