1

これはおそらくばかげた初心者の質問ですが、URL を提供するだけで匿名ユーザーが利用できるようにしたいスプレッドシートがあります。たくさんの髪の毛を引っ張った後、セル保護の雨のダンスがわかりましたが、別の問題があります.

元のシートの onOpen は問題なく機能し、カスタム メニューを作成しますが、シートを共有して匿名ユーザーとして開くと、メニューが表示されません。Google の製品が広告どおりに機能しないのはこれが初めてではない、と私は思いました。そこで、不足しているメニューでは実行できないアクションを実行するボタンを作成しました。同じ話。ボタンは匿名ユーザーに表示されますが、死んでいます。クリックしても動作しません。

匿名ユーザーに対して javascript を無効にすることはありそうにありませんが、そのように見えます。助言がありますか?

4

1 に答える 1

1

あなたは正しいと思います user3550481. 私はあなたが上で説明したことを複製し、あなたが報告したことをテストするためにこのスプレッドシートを作成しました. これには、onOpen で表示される「マイ メニュー」メニューと、同じ機能に割り当てられたスクリプトを含むボタンがあります。共有が「リンクを知っている全員」または「公開」に設定されていても、違いはありませんでした。匿名でも誰でもアクセスできるWebアプリケーションとしてスクリプトを公開しようとしました-明らかにdoGet機能がないため、違いがあるとは思っていませんでした-そうではありませんでした。

匿名ユーザーとして、つまり Google アカウントにサインインしていない状態でテストしたところ、「マイ メニュー」メニューは表示されず、ボタンは機能していませんでした。

Google アカウントにサインインすると、どちらも機能しましたが、興味深いことに、変更履歴には結果が匿名として表示されます。

Issue Trackerに報告するよりも優れた解決策を誰かが提供しているかどうか、非常に興味があります。それまでの間、リンクをユーザーと共有するときはいつでも、適切に機能させるには Google アカウントにサインインする必要があることを説明することをお勧めします。これは結局のところ無料です。

スプレッドシートで使用されるスクリプト:

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var myMenu = [ {name: 'My Menu', functionName: 'myMenu'}];
  ss.addMenu('My Menu', myMenu);
}

function myMenu() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName('Sheet1');
  var lr = sh.getLastRow()+1;
  sh.getRange(lr, 1).setValue('Clicking My Menu worked!');
}
于 2014-04-19T19:36:15.210 に答える