susandes-male
@susandes-male

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

GASのコンテナバインド型のファイルIDについて

直近でスクリプトファイルのファイルIDについて質問させてもらいましたが、
今度はコンテナバインド型のファイルIDについて質問させてもらいます。

コンテナバインド型では2個1組のファイルがセットです。
 ・コンテナファイル:Googleのドキュメントやスプレッドシートなど。
 ・スクリプトファイル:コンテナファイルにバインドされているスクリプトファイル

私が知りたいのは、コンテナバインド型で相手ファイルのファイルIDを取得する方法です。
 (1)コンテナファイルから、バインドしているスクリプトファイルのファイルID
 (2)スクリプトファイルから、バインドされているコンテナファイルのファイルID

Webページを良く調べれば分かる内容かもしれませんが、どのように調べたらよいのかが分かりません。
申し訳ありませんが、よろしくお願いいたします。

0

2Answer

Google Apps Script projectのfile IDを取得したいと理解しました。

質問1への回答

(1)コンテナファイルから、バインドしているスクリプトファイルのファイルID

この場合、ファイルIDを取得するには、const scriptId = ScriptApp.getScriptId()を実行する必要があります。そのため、このスクリプトをスクリプトエディタへ入れた後、コンテナファイル側(スプレッドシートなど)から実行する流れになるかと思われます。

例えば、次のようなコンテナファイル側(スプレッドシートなど)のスクリプトをスクリプトエディタへコピーペーストした後、保存してください。

const SAMPLE = _ => ScriptApp.getScriptId();

その後、サンプルとして、=SAMPLE()のカスタム関数をセルへ入れてください。これにより、Google Apps Script projectのfile IDが返されます。

質問2への回答

(2)スクリプトファイルから、バインドされているコンテナファイルのファイルID

この場合、例えば、スプレッドシートを使用している場合は、次のようなスクリプトでスプレッドシート(コンテナファイル)のファイルIDを取得することができます。

const fileId = SpreadsheetApp.getActive().getId();
console.log(fileId);

Google DocumentやGoogle Slide, Google Formの場合は、下記のように取得できます。

DocumentApp.getActiveDocument().getId()

SlidesApp.getActivePresentation().getId()

FormApp.getActiveForm().getId()
0Like

Comments

  1. @susandes-male

    Questioner

    早速の回答、ありがとうございます。
    まだ試していないので、結果が分かりましたらご報告いたします。

  2. @susandes-male

    Questioner

    回答された内容の結果報告をします。

    質問1と2の両方とも、記述された内容通りに動きました。
    しかし私が欲している内容とちょっと違うので、再質問させてもらいます。

    質問1
    スプレッドシートのグーグルから提供されているデフォルトの関数の中に、
    バインドしているスクリプトファイルのファイルIDを取得する関数はありませんか。
    またはスクリプトファイル側に何もせずに、スプレッドシート側でのみファイルIDを取得する関数を自作することはできませんか。

    質問2
    バインドされているスクリプトファイルの中に、バインドしているコンテナファイルのファイルIDを取得する関数を用意しておいて、
    コンテナファイルが開いていない状態で、まったく別のスクリプトからバインドされているスクリプトの上記関数を呼び出すことをしたいのです。
    そのようなことは無理なのでしょうか。

はじめに、しかし私が欲している内容とちょっと違うので、再質問させてもらいます。について、誠に申し訳ありませんでした。

スプレッドシートのグーグルから提供されているデフォルトの関数の中に、バインドしているスクリプトファイルのファイルIDを取得する関数はありませんか。またはスクリプトファイル側に何もせずに、スプレッドシート側でのみファイルIDを取得する関数を自作することはできませんか。

built-in functionsのことを指しているのであれば答えはNOです。この場合はGoogle Apps Scriptを使用する必要があります。

コンテナファイルが開いていない状態で、まったく別のスクリプトからバインドされているスクリプトの上記関数を呼び出すことをしたいのです。

Apps Script APIやWeb Appsなどを使用する方法もあるかと思いますが、設定が少し複雑なため、この場合はライブラリの使用がシンプルな解決策かと思われます。

0Like

Comments

  1. @susandes-male

    Questioner

    回答ありがとうございます。
    質問1について
    スプレッドシートのメニューからバインドしているスクリプトファイルが開けるので、built-in functionsでも提供しているのかなと思いました。
    スプレッドシートとスクリプトファイルの関係は内部管理情報なので公開しないのですね。
    質問2について
    了解しました。私の知識不足、勉強不足にもかかわらず丁寧に説明していただきありがとうございます。もう少し勉強しようと思います。

    別件ですが、以前回答していただいた自分のスクリプトファイルのファイルIDをScriptApp.getScriptIdメソッドを用いて取得する件で問題が発生しました。
    質問をクローズしたのを再開しようと思っています。現在問題点の内容をまとめ中です。
    もしお時間があればそちらも見ていただけると嬉しいです。

Your answer might help someone💌