質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.77%

[GAS] GASにて設定したはずのトリガーを設定者自身が確認できない

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 11K+
退会済みユーザー

退会済みユーザー

前提

  • 当該ファイルは G Suite 環境下で複数人の特定のユーザーと共有されている(オーナーと編集者のみ閲覧者はなし)
  • トリガーはGASにて設定され、スクリプトはファイルオーナーのみが実行(その他ユーザーは実行しない、していない)
  • GAS実行時にトリガーIDを取得し、スクリプトプロパティに記録するようにしている

問題

  1. 当該ファイルのオーナーアカウントからGASを実行した後、「スクリプトのプロパティ」、「現在のスクリプトのトリガー」及び「すべてのトリガー」を確認。
  2. スクリプトプロパティにはトリガーのIDが記録されているが、トリガーのリストに設定したはずのトリガーが表示されない。

開発環境(1)、テスト環境(2)、本環境とあり、本環境のみの現象である。

※トリガーの確認につきましては、設定したアカウント(この場合オーナーアカウント)からしか確認できないため、クライアントからの報告となります。
※スクリプトのプロパティは共有者として確認できました(削除はオーナーのみ可能)

試したこと

  • スクリプトのプロパティを削除後、再実行→現象変わらず
  • IDからトリガーの存在チェック→存在しない

※現在、クライアントに対し実行トランスクリプトの送信依頼中。

以下、ソースコードサンプルです。
同様の現象に関しまして何か情報がございましたらお待ちしております。
※jinshanさんが幾つかの条件下で検証されています。ありがとうございます。

function hogehoge(){
  var P = PropertiesService.getScriptProperties(),
      Y = new Date().getFullYear() + 1,
      Yt;

  //既にプロパティがセットされていれば処理中止
  if(P.getProperty({プロパティーのキー}) != null){return;}
  //翌年の1月1日に実行
  Yt = ScriptApp.newTrigger({ハンドラスクリプト名})
        .timeBased()
        .atDate(Y, 1, 1)
        .create();
  //スクリプトのプロパティをセット
  P.setProperty({プロパティーのキー}, Yt.getUniqueId());
}

補足

  1. 開発環境:Gmail一般アカウント、共有なし
  2. テスト環境:クライアントの G Suite 環境下に動作状況共有用として設置(中間ポイント)、アカウントを共有。当該ファイルの複数人共有あり。

いずれも原則として本環境よりディレクトリ構造、データ等の反映をしている。

[スタックオーバーフローより]
現象の部分一致ですが、特定アカウント下で起きる未解決のバグと推測しています。
しかしながら、まだ確定とは言い切れませんので、引き続き情報募集中です。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

check解決した方法

0

結論から申しますと、本件の現象につきましては、原因不明です。
ですが、クライアントからトリガー設定の確認ができたと報告がございましたので自己解決とさせていただきます。

なお、クライアントから提供された実行トランスクリプトを確認しましたが、トリガー設定は実行されていました。
また、その際に取得したIDも確認しました。
(別途関数を定義し、IDからトリガーの特定と存在確認をしていただきました。)

トリガー設定状態のキャプチャも提供いただきましたが、同じトリガーが2つ設定されていました。
内1つは「表示されなかったもの」であると思われます。

なぜ表示されなかったのか、確認できなかったのかという点は、クライアントも不明なようです。
今回の現象とは異なりますが、提示した情報の通り、「設定したトリガーが(リロード後に)消える」という現象はGoogle側の未解決のバグとして存在するようですし、
実は設定されているけど表示されないこともある、という類の不具合も起こり得るということでしょうね。

スッキリしない結果ですが、以上です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

上記掲載のスクリプトをG Suite環境下のスクリプトファイル(Standalone Script)に置き、2つのアカウント(一方をオーナー権限、一方を閲覧権限のみ共有設定)を使って、下記の順に実行しました。

①オーナーアカウントで初期状態から実行
→プロジェクトトリガー・スクリプトプロパティともにセットされた
②オーナーアカウントでプロパティセット状態から実行
→トリガー・プロパティともに①の状態のまま
③オーナーアカウントでプロパティを削除して実行
→追加で同じ内容のトリガーが2つ目作成、プロパティは新たな内容でセット
④閲覧者アカウントでスクリプトを実行
(閲覧権限なのでプロパティは見えず、トリガーはアカウント単位のため空状態)
→スクリプトの実行承認の後、③でプロパティセット状態の為、トリガーセットせず終了
⑤オーナーアカウントでプロパティ削除後、閲覧者アカウントでスクリプトを実行
→トリガーセットされ、オーナー側でプロパティを見ると、新たな値がセットされていた
⑥閲覧者アカウントでスクリプトを実行
(閲覧権限なのでプロパティは見えず、トリガーは1つセットされた状態)
→⑤でプロパティセット状態の為、トリガーセットせず終了
⑦ ⑤⑥を繰り返しするたびに、閲覧者アカウントの方に同じトリガーが増えていく

ということで、スクリプトはご作成意図の通り動いています。

疑問点は、④で閲覧者(or編集者)側に1回でも何らかのスクリプトを実行させて承認をさせたかどうかです。
また、オーナー権限を共有とは2つのPCから同じアカウントでログインしているという意味ですか?それならわかりますが、1ファイルにつきオーナー権限は1アカウントだと思います。

蛇足ですが、googleドライブ上では、ディレクトリ構造は全く無意味(見た目のファイルの整理だけ)で、すべてファイルIDで管理されています。従って同じフォルダ内に同じファイル名でも問題になりません。共有した時の共有先もファイルIDにて共有先ファイルが指定されますので、オーナー側のどのフォルダにファイルがあるかは問われません。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/02/13 20:50

    jinshanさんへ
    様々な検証、ありがとうございます。
    (1)~(7)、当方の想定通りの動作です。
    補足するとすれば、(5)について、(4)同様、閲覧者からはプロパティは見えない、でしょうか。

    その上で、(4)についてですが、そもそも閲覧者は存在せず、オーナーと編集者数人となります。
    トリガーの設定はオーナーが行うことを前提としています。
    従いまして、当該ファイルに対してオーナー以外がスクリプトを実行したということはございません。
    ※本環境へは「納品」という形式になるため、当方も本環境ではスクリプトを実行しません。

    ですので、オーナーが実行し、プロパティが存在しているにも関わらず、「トリガーが確認できない」という状況が原因不明なのです。
    その他、何かお気づきの点等ございましたらよろしくお願い致します。


    以下、補足です。
    後ほど、質問内容にも反映いたします。

    > 「オーナー権限の共有」

    1ファイル1オーナーは存じております。
    動作状況の共有用途として、アカウントを発行・共有していただいております。


    > 蛇足ですが、googleドライブ上では、ディレクトリ構造は全く無意味(見た目のファイルの整理だけ)で、すべてファイルIDで管理されています。...

    上記のご指摘も理解しております。
    ただ、当方も含めた G Suite ドメイン外の関係者との複雑な共有設定を維持、引き継ぐためにはディレクトリ構造は必要なのです。
    もちろん見た目だけのものですが、特定の場所にファイルを生成、移動といった処理を頻繁に行いますので、本システムにおいては親フォルダの共有設定は重要なのです。

    キャンセル

0

セキュリティポリシー上、当方の従事するG Suite環境のGドライブファイルの外部共有が禁止されているため、その把握(=外部環境との複雑な共有の制限について)はしておりませんでした。すみません。

当方のG Suite環境で確認すると、スクリプト実行後のスクリプトプロパティは
・オーナーアカウント=編集・削除・閲覧可
・編集者=閲覧可
・閲覧者=すべて不可(但しスクリプト実行時には、プロパティ値を参照できている)
でした。

共有されたスクリプトファイルであっても、納品された顧客側の編集者アカウントで当該スクリプトを実行させない限り、トリガーのセットはされません。トリガーは各アカウントに紐ついてセットされるものです。「オーナー以外がスクリプトを実行していない」という説明からすると、「オーナーアカウントでトリガーをセットしておくだけでは、編集者側にはトリガーはセットされていないという状態になる」ということでお悩みになっているだけだと思われます。

また、直接編集者にスクリプトを見せず手動で1度も実行しないで、何か外部からスクリプトを起動させようという作りの場合、編集者アカウントでスクリプトファイル自体が実行承認していない状態のため、このスクリプトでトリガーがセットできない、という状況も考えられます。

以上の回答で、問題解消できますでしょうか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/02/14 11:01

    jinshanさんへ
    ご回答いただきありがとうございます。
    まだまだ説明不足のようで、当方の質問意図を伝えきれていないようです。
    質問力不足で申し訳ございません。

    > トリガーは各アカウントに紐ついてセットされるものです。...編集者側にはトリガーはセットされない、という状態でお悩みになっているだけだと思われます。

    もちろん、上記理解しております。
    スクリプトのプロパティ(の編集権限)がオーナーアカウントへ紐ついていることも理解しております。
    (念のため、オーナー=クライアントです)

    極端なことを申しますと、オーナーがトリガーをセットし、オーナーがそれを確認できれば良いのです。(検収完了ポイント)
    編集者が実行する必要もございませんし、トリガーの確認をする(確認ができる)必要もございません。
    従いまして、ご指摘の「編集者側にはトリガーはセットされない、という状態でお悩みになっているだけだと思われます」ということではございません。
    (本環境では当方自身も「編集者」となりますので、確認はできません)

    オーナーが実行したにも関わらず、そのオーナー自身がトリガーを確認できない、ということが不明なのです。


    > また、直接編集者にスクリプトを見せず手動で1度も実行しないで、...このスクリプトでトリガーがセットできない、という状況も考えられます。

    外部からの実行(スタンドアロンを含む)ではなく、スプレッドシートに紐付けたもの(コンテナバウンド)となりますが、ご指摘の件、テスト環境にて実証済みとなります。
    共有したオーナアカウント以外は実行承認していない状況で、プロパティ及びトリガーの確認ができております。

    キャンセル

  • 2018/02/14 12:23

    ご質問に至った状況の可能性を探ったのですが、すべてクリアされているとのことで、当方でG Suite環境下のオーナーアカウントで、スプレッドシートのコンテナバウンドでも、掲載のスクリプト実行でトリガーが追加できているので、これ以上の解決の手がかりには役立てないようです。。

    納品先からの実行トランスクリプトやログを得られてから、まだ解決に至らないようであれば、一緒に考えたいと思います。解決された場合もぜひ内容記述をお願いいたします。私も原因は何だ?というままでは気持ち悪いので。よろしくお願いします

    キャンセル

  • 2018/02/14 13:37

    諸々検証いただきましてありがとうございます。
    また、お時間を取らせまして申し訳ございません。
    もちろん、どのような結果(例えば、もうお手上げ、終了!という場合でも、、、)フィードバックはいたします。

    内容上、クライアントからの報告ベースでの確認となってしまいますので、人為的ミスもわずかに疑っています。
    しかしながら、プロパティ削除後の再実行にてトリガーがないという確認ができていますので、指示した手順通りに実行していただいたと考えております。

    特定の状況下なのかあるいは特定のアカウントでの問題なのか、いずれにしても実行トランスクリプト待ちです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.77%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る