CSOMを使用してルートサイトコレクションにユーザーカスタムアクションとして展開しているSharePoint Online用のかなり簡単なJavaScriptを作成しました。SharePointオンラインでテナント以外の管理者がUserCustomActionを起動しない
public static void ProvisionScriptLinkCustomAction(ClientContext ctx, string name, string url)
{
Site site = ctx.Site;
ctx.Load(site.UserCustomActions);
ctx.ExecuteQuery();
foreach (UserCustomAction action in site.UserCustomActions)
{
if (action.Name == name)
{
action.DeleteObject();
break;
}
}
ctx.ExecuteQuery();
UserCustomAction customAction = site.UserCustomActions.Add();
customAction.Location = "ScriptLink";
customAction.Name = name;
customAction.ScriptSrc = url + "?" + Guid.NewGuid().ToString();
customAction.Update();
ctx.ExecuteQuery();
}
展開し、最初にカスタムアクションをテストするとき、私はテナント管理者としてログインしています:
次のコードは、私がサイトコレクションにスクリプトをプロビジョニングするために使用していたブロックです。 ではなく、テナント管理者というユーザーとしてログインするまで、すべてが正常に機能します。サイトコレクション管理者以下の他のユーザーとしてログインした場合、カスタムアクションは起動せず、すべての努力は無駄になります。
これは構成やアクセス許可の問題のようですが、私はこの問題を解決するための場所を知ることができません。
ご意見はお寄せください。
ブラウザのキャッシュをクリアしたり、複数のブラウザでログインしたり、潜在的なキャッシュの問題を処理するためのその他のすべてのトリックにもかかわらず、キャッシュの問題が残っていると思いました。私はIEデベロッパーツールでネットワークアナライザーをオンにして、サイトにアクセスしてJSファイルの読み込みを確認できました。私はそれがロードを見てすぐに、期待された動作(新しいタブまたはウィンドウで外部リンクをポップ)自体が明らかになった。しかし、開発者ツールを実行していないサイトに戻った場合、スクリプトは読み込まれません。 –