Skrypt do zmiany właściciela dokumentu w Dokumentach Google
Nowość w StackOverflow i skrypcie Google Apps. Doceniam wszelką pomoc / wskazówki.
Zadanie:
Próbuję napisać skrypt Google Apps, który przeniesie prawo własności do wszystkich plików w określonym folderze na jednego właściciela. Jestem super administratorem konta Google Apps w wersji profesjonalnej. Jednak nie będę ani pierwotnym właścicielem, ani nowym właścicielem, a nowi właściciele nie mogą być super administratorami (a zatem uruchamiać skrypty) ze względów bezpieczeństwa. Zarówno oryginalny, jak i nowi właściciele są w tej samej domenie.
znalazłemnastępujący kod, którego użyłem i dostosowałem do moich celów, ale otrzymuję „Żądanie nie powiodło się dla kodu 400. Odpowiedź serwera:” błędy wywołania URLFetchApp.
Co ja zrobiłem:
ZaPrzewodnik dla programistów listy Aplikacji Google Zmieniłem zmienną „base”, aby podszyć się pod nowego właściciela dokumentu:
var base = 'https://docs.google.com/feeds/';
do
var base = encodeURIComponent('https://docs.google.com/feeds/'+newOwnerEmail+'/private/full');
Zaktualizowałem także klucz konsumenta i klucz tajny do poprawnych wartości w metodzie googleOAuth_ (). W tym miejscu znajduje się cała sekcja kodu prowadząca i obejmująca problematyczną linię:
file.removeEditor(newOwnerEmail);
var base = encodeURIComponent('https://docs.google.com/feeds/'+newOwnerEmail+'/private/full');
var fetchArgs = googleOAuth_('docs', base);
fetchArgs.method = 'POST';
var rawXml = "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gAcl='http://schemas.google.com/acl/2007'>"
+"<category scheme='http://schemas.google.com/g/2005#kind' "
+"term='http://schemas.google.com/acl/2007#accessRule'/>"
+"<gAcl:role value='owner'/>"
+"<gAcl:scope type='user' value='"+newOwnerEmail+"'/>"
+"</entry>";
fetchArgs.payload = rawXml;
fetchArgs.contentType = 'application/atom+xml';
var url = base + encodeURIComponent(oldOwnerEmail + '/private/full/'+fileId+'/acl&alt=json');
try { var content = UrlFetchApp.fetch(url, fetchArgs).getContentText(); }
catch (err) { Logger.log(err.message) }
Za każdym razem, gdy aplikacja „próbuje” wykonać metodę UrlFetchApp.fetch (), aplikacja „przechwytuje” błąd 400.
Pytania:
Czego mi tu brakuje? Czy „fetchArgs” jest w jakiś sposób zniekształcony (być może „rawXML”, który „fetchArgs” jest podawany)? Czy dzięki nowemu pakietowi SDK Google Drive korzystasz z tego interfejsu API? Byłbym wdzięczny za wszelkie wskazówki lub zasoby, które mógłbym pominąć, a także wszelkie wskazówki dotyczące ulepszenia sposobu zadawania tych pytań. Z góry dziękuję.