ドキュメント( here)とhereおよび関連を読んで再読しました。どのタイプの権限がどのタイプの書式設定を必要とするかなどをよりよく理解するのに役立つ他のドキュメントはありますか?
私が解決しようとしているパズルはこれです: 誰かがセルを編集するとき、編集したユーザーに基づいてセルの色をフォーマットしたいと思います。
自分だけに役立つコードを書くのは簡単です。ただし、別の人のために機能させる際に、アクセス許可に関する問題が発生し続けています。
ここで私は混乱します。私の理解を説明します。訂正していただくか、より詳しい情報が記載されたドキュメントを参照していただければ幸いです。セルが編集されたときにイベントを発生させるには、編集イベント、単純な onEdit トリガー、およびインストール可能なonEdit
トリガーの 3 つの方法があるようです。
単純な onEdit トリガーを作成するには、 という名前の新しい関数を作成しますonEdit()
。イベントをキャプチャするには、括弧内に文字列を入れますonEdit(e)
。編集時に保存された情報にアクセスするには、次のように入力しますvar range = e.source.getActiveRange()
。単純なイベント トリガーはセキュリティが制限されており、 user/ の名前を取得できないactiveUser
ため、問題の解決に使用できません。
イベントをキャプチャするインストール可能な onEdit トリガーを作成するには、新しい関数を作成しますmyFunction(e)
。次に、スクリプト エディターに入り、[リソース] をクリックして、ドロップダウンから関数を選択し、[スプレッドシートから] をクリックしてからonEdit
. この場合、イベントに関する情報にアクセスするには、次のように入力しますvar range = e.range
。
このメソッドは、"variable user = e.user" に移動してから "ss.toast(user)" に移動してユーザーの名前を表示できるように、より高度なアクセス許可を付与することになっています。しかし、私以外の誰かがこれを行うと、トーストは空白になります。また、これで、スクリプトが「スクリプトをインストールしたユーザーとして実行される」ことはわかっていますが、それは、スクリプトをトリガーした人の ID にアクセスできないということですか?
編集イベントを作成するには、あなたは...そうですね...これはトリガーを作成することと同じですか? 私はこれで完全に迷っていると思います。
たとえば、何か名前を付けてmyFunction(e)
インストール可能な onEdit トリガーを作成しますが、入力する代わりに と入力しrange = e.range
ますrange = e.source.getActiveRange
。私だけでも同じように機能するようですが、インストール可能なイベントではなく単純なイベントのように機能するように、アクセス許可をクロスアップしましたか?
ドキュメントは言う:
「処理中のイベントをトリガーしたユーザーを特定できない場合があります。クロック ティック イベントの場合、これは重要ではありませんが、スプレッドシート編集イベントでは、スプレッドシートを変更したユーザーを必ずしも識別できるとは限りません。」
だから...必ずしもそうではありませんか?いつ機能し、いつ機能しないのですか? 私の場合は可能ですか?どうすればわかりますか (試行錯誤の私の現在の失敗した方法以外に?)。