2016-06-15 17 views
1

私は最近いくつかの配布グループの電子メールアドレスを変更しました。ユーザーが誤って電子メールをエーテルに送信しないようにOLDアドレスを連絡先リストから削除するのを手伝っています。 Admin SDKは他のユーザーの連絡先へのアクセスを提供しないため、関連するグループを削除するためにキーボードでユーザーとして実行されるスクリプト(EDIT:ウェブアプリケーションとして展開)を作成しました。ただし、ページが読み込まれると、承認のためのプロンプトが自動的に表示されます。スクリプトに既に権限があるかどうかの検出

混乱を避けるため、この前に説明のメッセージを表示したいと思います。これを行うには、ユーザーが必要な操作の承認を既に受けているかどうかを検出する必要があります。

古いアドオンでも同様の現象が見られました。その場合、著者はScriptProperties.getProperty('scriptAuthorized')を使用しましたが、現在は推奨されていません。誰でもこれを達成する方法を知っていますか?

+0

私はこれをテストしていませんが、この['PropertiesService.getScriptProperties()'](https://developers.google.com/apps-script)を試すことができます。/reference/properties/properties)を 'Properties'クラスの下に置きます。 ['getScriptProperties()'](https://developers.google.com/apps-script/reference/properties/properties-service#getscriptproperties)は、すべてのユーザーがこのスクリプト内でしかアクセスできるプロパティストアを取得します。お役に立てれば。 –

+0

@ Mr.Rebot - 'PropertiesService'はあなたのスクリプトからプロパティを保存するためのものです。承認情報にアクセスすることはできません。 –

答えて

0

私は実際にこの問題に対処する唯一の方法かもしれないと私は考えていました。

ウェブアプリは私としてではなくキーボードでユーザーとして実行するように設定されていたことを覚えておいてください。これは、アプリがユーザーの連絡先にアクセスできるようにするために必要でした。これの1つの結果は、doGet(e)機能でさえも認証が必要であるということです。これは、許可なしに何も表示する方法がないことを意味します。これは、スクリプトの承認のための私の元の意図を描写した。たとえそうでなくても、認​​可を確認するという行動でさえ認可が必要だと私は信じています。

私の解決方法は、実際のWebアプリケーションのポータルとして使用する2番目のWebアプリケーションを作成することでした。このポータルアプリケーションは、キーボードのユーザーではなくMEとして実行されるため、ロードするための承認は必要ありません。私は彼らが認可を必要としているかどうかを検出することはできませんが、私は少なくともダイアログに遭遇する可能性のある情報を提示することができます。

私は、ポータル用のHTML(非常に単純な)を含めました:

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    </head> 
    <body> 
    <p> 
    This tool will erase all of the old, irrelevant contact groups. <br> 
    When you click below, you may be prompted to authorize this app. Please do so. 
    </p> 

    <div> 
    <a href='https://link.to.script'> <input type='button' value='Click here to begin'></a> 
    </div> 

    </body> 
</html> 

は、私は私もいくつかの他の目的のために、この戦略を使用すると思うので、私が見つかりましたソリューションを活用していますLinking to another HTML Page in Google Apps Script

関連する問題