susandes-male
@susandes-male

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

スプレッドシートにスクリプトファイルがバインドされているかを知る方法を知りたい

スプレッドシートにコンテナバインド型のスクリプトファイがバインドされている場合は、スプレッドシートを開いてメニューの拡張機能=>Apps Scriptを選択することにより、スクリプトファイルを開くことができます。

しかしスプレッドシートにスクリプトファイがバインドされていないときに、メニューの拡張機能=>Apps Scriptを選択するとスクリプトファイが新規に作成されてバインドされてしまいます。

私が知りたいことは次の2項目です。
(1)スプレッドシートの画面から、バインドされているスクリプトファイルの有無を知る方法。
(2)スプレッドシートのオブジェクトから、バインドされているスクリプトファイルの有無を知る方法。

GASの公式ドキュメント(Google Workspace)を見ても該当するような項目がなかったので質問しました。

0

1Answer

スプレッドシートとは今やgoogle固有名詞のようです。chatGTPさんもその様に判断してます。

私の関心事に質問したら、つまらない回答でした。(著作権法の議論が我が国ではfixしてないので回答の掲載は控えさせて下さい)

スプレッドシートにスクリプトファイルがバインドされていても、実行しない指定はあるのですか?

microsoft社のスプレッドシートは拡張子で判断できます。xlsx,xlsmでしうか?
他のスプレッドシートで共通なのは、専用エディタで開くことで、スクリプトファイルの有無を確認できる点です。

そもそも?スクリプトファイルを実行するエンジンはスクリプトファイルの有無を判断し、何処の環境で実行しているのでしょうか?(M社はノートpc上です)

それでは、google固有名詞のスプレッドシートエンジンはどうやってスクリプトファイルの有無を判断し、何処で実行しているのでしょうか?chatGTPさんが答えてくれるかも?

0Like

Comments

  1. @susandes-male

    Questioner

    ちょっと質問内容が不足しているようでした。
    私が質問したのは、グーグルドライブ上のグーグルスプレッドシートのことです。
    マイクロソフト社のEXCELファイルはスプレッドシートとは呼ばずに、ワークブックと呼ぶのが一般的な気がします。

  2. spread sheetは 集計用紙(和訳)でした、我が国では一般的にに表計算ソフトです。lotus123の時代、M社のエクセルはMacのみで提供されていました。その時代はspread sheetと称されていました。

    さて,M社の集計用紙と違い、自PCに影響しないため、google集計用紙では調べる方法はエディタでコードの有無を確認するしか?ないとおもいます。(sandboxで守られているから)google固有名詞のスプレッドシートが膨大でヒットしません。

  3. SpreadsheetApp.getActiveSpreadsheet()がnullか否かを判定することで、スクリプト側からはバインドされているかを確認できます。
    一方でスプレッドシート側から関数などを使って、それを判定するのは恐らく無理でしょう。おっしゃる通り、メニューから選択して、新規ファイルができるかどうかしか無い気がします。

  4. @susandes-male

    Questioner

    早速の返答、ありがとうございます。

    結論を先に言いますと、getActiveSpreadsheetでは私の思っている結果は得られませんでした。

    スクリプト処理(getActiveSpreadsheet)を実行する方法は次の2種類があります。
    (1)スクリプトファイル本体で実行する。
     スクリプト処理を格納しているスクリプトファイルを開いて、スクリプト処理を実行する。
     この時はスクリプトファイルをバインドしているコンテナファイル(例えばスプレッドシート)のオブジェクトを取得できます。スタンドアロン型のときはnullになります。
    (2)別ファイルからライブラリとして実行する。
     スクリプト処理を格納しているスクリプトファイルを、別のスクリプトファイルにライブラリ登録する。そして別のスクリプトファイルからライブラリ側のスクリプト処理を実行する。
     この時に取得されるのはライブラリで呼び出した別のスクリプトファイルのオブジェクトです。スクリプト処理を格納しているスクリプトファイルのオブジェクトは取得できません。
     スクリプト処理を格納しているスクリプトファイルが、スタンドアロン型かバインドコンテナ型かの判定も出来ません。

    基本的な事だと思うのですが、以外に良い方法が見つかりません。

  5. @susandes-male

    Questioner

    基本的な事ですが良い方法はないみたいですね。
    この質問はクローズします。

Your answer might help someone💌