私は、異なるが同様のユースケースと問題を抱えていました。あなたと同じように、リンクを知っていれば誰でも私のソース ファイルにアクセスでき、私のドメイン設定では、ユーザーが私のドメイン外でコンテンツを共有できるようにしていました。それは私にとってはうまくいきましたが、彼らにとってはうまくいきませんでした。
これはあなたのために働くかもしれません、それは私のために持っています(これまでのところ):
元のスクリプトがあると仮定して...
- 「Script as web app」用に別のスクリプトを作成します。
- ScriptDb を使用して必要な fileId を格納する関数 (例: loadFileIds()) を記述します。loadFileIds() 関数を実行します。
- 呼び出されたときに ScriptDb.getMyDb から目的のファイル ID を返す別の関数 (getFileId() など) を同じプロジェクトに記述します。この関数で DocsList を使用しないでください。getFileId() は「私として実行」されるので問題ないと最初は思っていましたが、他のユーザーがスクリプトをトリガーしたときに失敗を引き起こしたのは常に DocsList 行でした。
- [ファイル] > [バージョンの管理] で: プロジェクトのバージョンを保存します。
- [発行] の下: プロジェクトのそのバージョンを Web アプリとしてデプロイします。[Execute the app as " me(me@mydomain.com) "] を選択し、[Who has access to web app] を [ Anyone ] に設定します。
- 元のプロジェクトで、[リソースの管理] に移動し、Web アプリのプロジェクト キーを入力し、バージョンを選択して識別子をコピーします。
- yourIdentifier.getFileId() を呼び出す関数を作成し、できれば fileId を返します。
これまでの私の経験では、外部ユーザーは、DocsList メソッドが null を返したときにはアクセスできなかったファイルにアクセスできました。しかし、もう 1 つ追加する必要があります... Web アプリ スクリプトをユーザーと共有する必要がある場合があります。それが必要かどうかはまだはっきりしていませんが、そうでないときにバグに遭遇したことがあります。リンクをメールで送信するオプションのチェックを外します。
ドキュメント、このビデオ、そしてもちろん StackOverflow の例からこれを行う方法を学びました。
ご覧のとおり、私はまだこれを自分で解決しており、システムのテストはこれまでのところ、他のユーザーをシミュレートするだけです。だから約束はありません。幸運を!問題にスターを付けます。