2016-03-23 3 views
0

Google Appsスクリプトを使用してスプレッドシートからユーザーを削除する方法を解明しようとしています。セルからのメールを使用してシートから編集アクセスを削除する

私は基本的に電子メール、名前、UIDなどの情報を持つ中央のスプレッドシートを持っています。私はこのスプレッドシートから電子メールを引き出し、別のスプレッドシートからその電子メールを削除するためにremoveEditor関数を使用しようとしています。以下のコードを見ることができます。

 var officerIDrow = officerID + 1; 

    var Tracker = SpreadsheetApp.getActive().getSheetByName('P_Tracker'); //the button is on the same sheet as this, this is why it is get active. 

    var PTBooking = SpreadsheetApp.openById("1JPS69ko99dQTEwjplF_l2l2G_T8RyHjxCyMxXd_AV_s"); //Referring to the other sheet where the email will be removed from editors. 

    var EmailAddressRange = "F" + officerIDrow; //This is the column where the emails are stored. The officer ID row refers to the user inputted value in a dialog. Don't worry about this, I have already checked to see if this is the issue, 

    var EmailAddress1 = Tracker.getRange(EmailAddressRange); 

    var EmailAddress2 = EmailAddress1.getValue(); 

    var EmailAddress3 = Utilities.formatString(EmailAddress2); //In my desperation, I was trying to see if setting it as string would help. 

    PTBooking.removeEditor(EmailAddress3); 

これは完全なコードではありません。見たい場合はhereをクリックしてください。しかし、重要なことはすべて上です、他のすべてはうまく動作します。

上記のコードは、電子メールを削除しようとしている最後の行にヒットするまで正常に実行されます。表示されるエラーメッセージに「無効なメール:」と表示されます。私は "電子メール:"ビットの後に引っ張っているものを表示する必要があります。しかし、それはしません!なぜ私は人を取り除くために電子メールを見つけて使用していないのか分かりません。

誰でも問題を見つけることができますか?

ありがとう、

Shaun。

+0

[email protected]として手動で知っているエディタのメールアドレスとしてVARを宣言し、それが動作するかどうかを確認しようとしていますか? getEditorsを使用して、返される内容と返される内容を確認しましたか。 varトラッカーでは、一重引用符を使用します。他の人はダブル ""を使います。多分1つに固執し、参照してください。 emailAddressRangeについて心配しないでくださいが、それが私だったら私もそれを見ています。 – Munkey

+0

これを行うだけで、PTBooking.removeEditor( "[email protected]");それは動作しません。他のスプレッドシートを適切に参照する方法についてはわかりません。 –

+0

私はこれを試しました。 'function myTest(){ var ss = SpreadsheetApp.openById(" ID HERE "); var editors = ss.getEditors(); ss.removeEditor( "[email protected]"); Logger.log(エディタ)。 } ' このログに記録された編集者のメールアドレスは、選択したエディタを外部スプレッドシートから削除して削除しました。 'emailAddress2'がロガーにどのようなログを記録するのか興味があります。 – Munkey

答えて

0

この基本テストは私の仕事でした。スプレッドシートから電子メールアドレスを読み取り、外部シートからエディタを削除することができます。私はあなたの例をコピーしようとしましたが、私はofficerIDrowがどのように動作するのかわかりませんが、それは数字だと思います。だから、私はそれはあなたのそれぞれの位置で何をスクリプトでポイントを助けるようでロガービットを残してきたVAR

function myTest() { 
var ss = SpreadsheetApp.openById("ID HERE"); 
var idRow = 11; 
var tracker = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("tracker"); 
var emailCell = "F"+idRow; 
Logger.log(emailCell); 
var emailAddress = tracker.getRange(emailCell).getValue(); 
Logger.log(emailAddress); 

ss.removeEditor(emailAddress); 

var editors = ss.getEditors(); 
Logger.log(editors); 

} 

として番号を保存。

細胞内の電子メールアドレスは、プレーンでなければならない、そのようこんにちは、

+0

こんにちはMunkey、私はあなたがこのリンクで見つけることができるビデオを作った:https://drive.google。com/folderview?id = 0B97zCil2wco-eTlLYkgxXzBmYnc&usp =すべてを説明する共有 –

+0

私はiPad上でビデオを見ることができるように管理しています。私は実際にfと行番号で列fを埋めることに興味があり、返されるものをテストします。今夜もっと多くのヘルプを提供することはできませんが、もしあなたがGoogleのハングアウトのために無料であれば、私に知らせてください。私はスクリプト作成の専門家ではなく、ただ助けようとしています。 – Munkey

関連する問題