Nachdem Du die ACL ausgewertet, hast, brauchst Du die Autorenfelder des Dokuments nur dann zu bemühen, wenn der User Autor in der Datenbank ist. Ist er nur Leser, darf er kein Dokument ändern, ist er Editor oder mehr, darf er jedes Dokument ändern.
Ich finde es aber recht mühsam, so vorzugehen. Da Du die Gruppen auflösen musst, bei Autorenfeldern musst Du zusätzlich Wildcards (*) berücksichtigen. Um einen vernünftigen Vorschlag zu geben, müsste man mehr über die Anwendung wissen.
Läuft das Script im geöffneten Dokument? Dann würde ich die Schaltfläche nur im Bearbeiten-Modus anzeigen, oder in dem Script das Dokument in den Bearbeiten-Modus versetzen, ist es danach immer noch im Lese-Modus, darf der Benutzer es nicht bearbeiten -> Ende des Scripts.
In einer Ansicht ist es nicht elegant, erst das Dokument zu öffnen. Wenn es mehrere sind, ist es sowieso sinnfrei. Bei solchen Aktionen nutze ich gerne einen Agenten, der von einem User mit höheren Rechten unterzeichnet ist. Dieser Agent wird dann mit agent.RunOnServer vom Benutzer gestartet, nachdem irgendwo ein entsprechender Änderungsauftrag erstellt wurde.
Vielleicht willst Du auch was ganz anderes?