1

Google Aps (GAS) でスクリプトを書いていますが、別のユーザーのスプレッドシートにユーザー (/ライター) (ドメインの管理者) を追加する必要があります。

スクリプトは管理者権限で実行/起動されています。

まず、「ドメインのユーザーになりすますための Google Apps 管理アクセス」を使用して、彼のドキュメント (スプレッドシート) のリストを取得し、ドキュメントの ID を取得します。

var oauthConfig = UrlFetchApp.addOAuthService("docs"); oauthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken"); oauthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken? (...)

この部分は正常に機能しており、目的の ID を取得しています。

ここで、このドキュメントに自分自身 (administrator@example.com) を追加します。

私はこれを試しています:

var optAdvancedArgs = {
"contentType": "application/atom+xml",
"method": "POST",
"headers": {  "GData-Version": "3.0" }, 
              "oAuthServiceName": "docs", 
              "oAuthUseToken": "always",
           };

var url_set = "https://docs.google.com/feeds/" + ユーザー + "/private/full/document:" + matriu2[0][6] + '/acl/user:administrator@example.com'

var result = UrlFetchApp.fetch(url_set, optAdvancedArgs);

「user」はドキュメントの所有者、アクティブなユーザー (Session.getActiveUser().getUserLoginId())、「matriu2[nm][6]」はドキュメントの ID です。

これは機能しません。

何か案は ?

セルジ

4

2 に答える 2

1

1 時間を費やした後、これが得られたものです。この機能は、ドキュメントを自分 (ドメイン管理者) と共有します。xml の他のパラメーターを変更して、読み取り、書き込み権限などを付与することができます。

function shareDocumentToMe(){
  var base = 'https://docs.google.com/feeds/';
  var fetchArgs = googleOAuth_('docs', base);
  var writerID = Session.getEffectiveUser().getEmail();
  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='writer'/>"
      +"<gAcl:scope type='user' value='"+writerID+"'/>"
      +"</entry>";
  fetchArgs.payload = rawXml;
  fetchArgs.contentType = 'application/atom+xml';
  var url = base + 'user@yourdomain.com/private/full/'+yourDocumentID+'/acl?v=3&alt=json';
  var content = UrlFetchApp.fetch(url, fetchArgs).getContentText();
  Logger.log(content);
}

//Google oAuth
function googleOAuth_(name,scope) {
  var oAuthConfig = UrlFetchApp.addOAuthService(name);
  oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
  oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
  oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
  oAuthConfig.setConsumerKey("anonymous");
  oAuthConfig.setConsumerSecret("anonymous");
  return {oAuthServiceName:name, oAuthUseToken:"always"};
}

Google サイトに同じコードを設定しました。ここで見ることができます。 https://sites.google.com/site/appsscripttutorial/urlfetch-and-oauth

于 2012-05-13T07:37:03.570 に答える
0

私はこれを見つけることはなかったでしょう。どうもありがとうございました。

以下を変更しました (var url = ...):

'user@yourdomain.com/private/full/'


user + '/private/full/'

どこ

user = Session.getActiveUser (). getUserLoginId ()

またgoogleOAuth_、ドメインの値を入れます:

oAuthConfig.setConsumerKey ("mydomain.com");

oAuthConfig.setConsumerSecret ("xXxXxXxXxXxXxXxXx");

そして、それは完全に機能します!

ユーザーによって作成された組織の文書の一部を、ドメインの管理者がユーザーに代わって (許可を与えると) 操作できることは、非常に興味深いことだと思います。

また、セキュリティのコピーなど、ユーザーの注意を必要とせずに (または十分な専門知識を持っていなくても) プログラムが (管理者権限で実行して) アクセスできるように、ユーザー リソース (ドキュメント、スプレッドシートなど) ...

私の場合、ガジェット「Flubaroo」と同様にユーザー(教師)によって作成されたGoogleドキュメントフォームを評価するプログラムを作成しますが、Google Appsスクリプト(GAS)を使用してGoogleサイトによってプログラムされたグラフィカル環境(GUI)で.

お時間をいただきありがとうございました。

セルジ

于 2012-05-13T11:04:52.197 に答える