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

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

新規登録して質問してみよう
ただいま回答率
85.51%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

3回答

20511閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2018/02/12 02:13

編集2018/02/15 14:34

##前提

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

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

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

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

##試したこと

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

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

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

Javascript

1function hogehoge(){ 2 var P = PropertiesService.getScriptProperties(), 3 Y = new Date().getFullYear() + 1, 4 Yt; 5 6 //既にプロパティがセットされていれば処理中止 7 if(P.getProperty({プロパティーのキー}) != null){return;} 8 //翌年の1月1日に実行 9 Yt = ScriptApp.newTrigger({ハンドラスクリプト名}) 10 .timeBased() 11 .atDate(Y, 1, 1) 12 .create(); 13 //スクリプトのプロパティをセット 14 P.setProperty({プロパティーのキー}, Yt.getUniqueId()); 15}

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

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

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

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

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

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

投稿2018/02/16 14:42

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

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

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

投稿2018/02/14 00:48

編集2018/02/14 00:59
jinshan

総合スコア107

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/14 02:01

jinshanさんへ ご回答いただきありがとうございます。 まだまだ説明不足のようで、当方の質問意図を伝えきれていないようです。 質問力不足で申し訳ございません。 > トリガーは各アカウントに紐ついてセットされるものです。...編集者側にはトリガーはセットされない、という状態でお悩みになっているだけだと思われます。 もちろん、上記理解しております。 スクリプトのプロパティ(の編集権限)がオーナーアカウントへ紐ついていることも理解しております。 (念のため、オーナー=クライアントです) 極端なことを申しますと、オーナーがトリガーをセットし、オーナーがそれを確認できれば良いのです。(検収完了ポイント) 編集者が実行する必要もございませんし、トリガーの確認をする(確認ができる)必要もございません。 従いまして、ご指摘の「編集者側にはトリガーはセットされない、という状態でお悩みになっているだけだと思われます」ということではございません。 (本環境では当方自身も「編集者」となりますので、確認はできません) オーナーが実行したにも関わらず、そのオーナー自身がトリガーを確認できない、ということが不明なのです。 > また、直接編集者にスクリプトを見せず手動で1度も実行しないで、...このスクリプトでトリガーがセットできない、という状況も考えられます。 外部からの実行(スタンドアロンを含む)ではなく、スプレッドシートに紐付けたもの(コンテナバウンド)となりますが、ご指摘の件、テスト環境にて実証済みとなります。 共有したオーナアカウント以外は実行承認していない状況で、プロパティ及びトリガーの確認ができております。
jinshan

2018/02/14 03:23

ご質問に至った状況の可能性を探ったのですが、すべてクリアされているとのことで、当方でG Suite環境下のオーナーアカウントで、スプレッドシートのコンテナバウンドでも、掲載のスクリプト実行でトリガーが追加できているので、これ以上の解決の手がかりには役立てないようです。。 納品先からの実行トランスクリプトやログを得られてから、まだ解決に至らないようであれば、一緒に考えたいと思います。解決された場合もぜひ内容記述をお願いいたします。私も原因は何だ?というままでは気持ち悪いので。よろしくお願いします
退会済みユーザー

退会済みユーザー

2018/02/14 04:37

諸々検証いただきましてありがとうございます。 また、お時間を取らせまして申し訳ございません。 もちろん、どのような結果(例えば、もうお手上げ、終了!という場合でも、、、)フィードバックはいたします。 内容上、クライアントからの報告ベースでの確認となってしまいますので、人為的ミスもわずかに疑っています。 しかしながら、プロパティ削除後の再実行にてトリガーがないという確認ができていますので、指示した手順通りに実行していただいたと考えております。 特定の状況下なのかあるいは特定のアカウントでの問題なのか、いずれにしても実行トランスクリプト待ちです。
guest

0

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

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

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

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

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

投稿2018/02/13 07:14

編集2018/02/13 07:18
jinshan

総合スコア107

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/13 11:50

jinshanさんへ 様々な検証、ありがとうございます。 (1)~(7)、当方の想定通りの動作です。 補足するとすれば、(5)について、(4)同様、閲覧者からはプロパティは見えない、でしょうか。 その上で、(4)についてですが、そもそも閲覧者は存在せず、オーナーと編集者数人となります。 トリガーの設定はオーナーが行うことを前提としています。 従いまして、当該ファイルに対してオーナー以外がスクリプトを実行したということはございません。 ※本環境へは「納品」という形式になるため、当方も本環境ではスクリプトを実行しません。 ですので、オーナーが実行し、プロパティが存在しているにも関わらず、「トリガーが確認できない」という状況が原因不明なのです。 その他、何かお気づきの点等ございましたらよろしくお願い致します。 以下、補足です。 後ほど、質問内容にも反映いたします。 > 「オーナー権限の共有」 1ファイル1オーナーは存じております。 動作状況の共有用途として、アカウントを発行・共有していただいております。 > 蛇足ですが、googleドライブ上では、ディレクトリ構造は全く無意味(見た目のファイルの整理だけ)で、すべてファイルIDで管理されています。... 上記のご指摘も理解しております。 ただ、当方も含めた G Suite ドメイン外の関係者との複雑な共有設定を維持、引き継ぐためにはディレクトリ構造は必要なのです。 もちろん見た目だけのものですが、特定の場所にファイルを生成、移動といった処理を頻繁に行いますので、本システムにおいては親フォルダの共有設定は重要なのです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問