2016-06-27 30 views
2

私はGoogleのアプリケーションドメインにユーザーを追加したり削除したりできるgoogle appsスクリプトのアドオンを作成しています。特定の情報は、Googleシート(名、姓、従業員番号など)に入力されます。次に、ユーザーを入力する人は、追加したいユーザーの行をすべて選択できます。Google Appsスクリプトでユーザーを削除する - 「リソースが見つかりませんuserKey」エラーを修正しました

Google Appsスクリプトは、姓名に基づいてユーザー名とパスワードを作成し、Google Appsドメインに入力します。この部分は完全に機能します。

ユーザーを管理するユーザーが何らかの理由でドメインから削除したいユーザーの行を選択し、[ユーザーの削除]ボタンをクリックできるようにする別の機能を作成しようとしています。これにより、システムのメールアドレスに基づいてユーザーが削除されます。ここで

は私のコードです:

function delUsers() { 

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var range = sheet.getActiveRange(); 
    var i = range.getRow(); 
    var stop = range.getLastRow(); 

    while (i != stop + 1) { 
    var email = sheet.getRange("C" + i).getValue(); 
    var user = String(email); 
    AdminDirectory.Users.remove(user); 
    } 
}; 

あなたは関数が選択された各行をループし、電子メールアドレスを取得していることがわかります。形式は「[email protected]」です。

問題は「リソースが見つかりませんuserKey」です。下記のAbrahamBの提案によれば、userKeyがGASのドキュメントにある文字列であることを確認しました。私はこれを確認するためにjavacriptのtypeofを使用しました。

さらなる調査の結果、ユーザーが実際に削除されていますが、「Resource Not Found userKey」エラーがまだスローされています。

このエラーが発生している理由と解決方法を説明するのに役立ちます。この場合

+0

Google Appsの専門家ではありませんが、「userKey」には引用符が必要ですか? '' userKey ":email' –

+0

良い考えですが、うまくいかない。 Google Appsスクリプトはjavascriptに基づいており、オブジェクトリテラルはプロパティ名の周りでは使用しません。 – albydarned

+0

どこで/どのように他の場所で正しくuserKeyを使用していますか?同じ方法で動作している場合は、小さな問題でなければならない –

答えて

3

https://developers.google.com/admin-sdk/directory/v1/reference/users/delete

、それは文字列ではなく、あなたが作成したようなリソースを期待しています。そのため、先に行くと、次の操作を行います

while (i != stop + 1) { 
    var email = sheet.getRange("C" + i).getValue(); 
    var delete_user = AdminDirectory.Users.remove(email); 
} 

あなたの更新の質問については、ユーザーがすでに削除されている場合、これが発生する可能性があります。しかし、スクリプトエラーの場合は完全に停止するので、try/catchを使用するのが一般的な方法です。ただし、エラーが検出された場合は、ログに記録して残りのユーザーに対して繰り返し処理を続けることができます。

try { 
    AdminDirectory.Users.remove(user); 
} catch(e) { 
    // if the script code throws an error, 
    // do something with the error here 
    // For example: Logger.log(e) 
} 
+0

更新された質問をご覧ください。 – albydarned

+0

答えを更新しました。 – AbrahamB

関連する問題