問題タブ [gs-installable-triggers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2092 参照

google-apps-script - 匿名ユーザーには Google スプレッドシートのカスタム メニューが表示されない

Google スプレッドシート* カスタム メニュー (以下のコードを参照) が、匿名ユーザー、つまり URL (共有へのリンク) からスプレッドシートに直接アクセスするユーザーには表示されないことに気付きました。最初に署名する必要があります。
※スプレッドシートは共有で、権限は「リンクを知っている人なら誰でも編集可能」です。

これは予想される動作ですか?
ユーザーが最初にサインインしなくてもカスタム メニューを利用できるようにするための回避策はありますか?

コード ( Googleから)**:

** onOpen 関数は名前が myOnOpen に変更され、インストール可能なトリガーに関連付けられています。スプレッドシートの所有者のコンテキストで実行されることを確認しました。

ティア、

オリヴィエ

0 投票する
2 に答える
13679 参照

google-apps-script - そのアクションを実行する権限がありません

外部ソースからコンテンツを定期的に取得し、それを使用して Google サイトのページを更新するタイム トリガー スクリプトがあります。thisによると、スクリプトは私のアカウントで実行されているはずで、そのアカウントはその Google サイト ページを完全に評価しています (手動で編集してテストしています)。しかし、スクリプトを実行すると、

そのアクションを実行する権限がありません。

ページを手動で編集できるのに、スクリプトを実行するときにその権限がないのはなぜですか?

(一般化された)スクリプト関数は次のとおりです。

0 投票する
1 に答える
786 参照

javascript - Google スクリプト onChange サード パーティ INSERT_ROW

私はこれに対する明確な答えを1年以上見つけようとしてきました。うまくいけば、あなたの一人が解決策を持っているでしょう。

新しい行が追加されたときに起動する簡単なスクリプトが必要です。それでおしまい。私と私を助けようとしてくれたすべての人が直面している唯一の問題は、それがサードパーティのソース (フォーム) からのものであることです。

サードパーティのソースは送信時にシートに新しい行を追加しますが、トリガーは起動しません! なんで?現在、簡単なログ テストを実行して、編集時および/または変更時に更新されるかどうかを確認していますが、これまでのところ、両方に問題はありません。誰かがこれがなぜなのか説明できますか? 解決策を見つけるためにインターネット全体を検索しましたが、見つかりませんでした。

サードパーティのフォームは Formstack を介しており、新しい行が追加されているため、スプレッドシート内でトリガーしない理由はありません!

以下は、編集時または変更時にトリガーされるかどうかを確認するために使用している簡単な関数です。

0 投票する
2 に答える
9297 参照

google-apps-script - 新しい行が挿入されたときにGoogleスプレッドシートでスクリプトをトリガーする

Google スプレッドシートでスクリプトを実行しています。これは、Zapier (www.zapier.com) からの zap による onChange() イベント (スプレッドシートに新しい行が挿入されたとき) によってトリガーされます。スプレッドシートで新しい情報が作成されていることを確認できますが、トリガーはトリガーされません。すでに onEdit() イベントでテストしましたが、機能していません。時間ベースのトリガーであってはなりません。

助言がありますか?

0 投票する
1 に答える
2298 参照

google-apps-script - テンプレート スプレッドシート スクリプトをコピーするときに、Google スプレッドシート スクリプトにインストール可能な onEdit トリガー

テンプレート スプレッドシートをコピーするスクリプト (A) があります。このテンプレート スプレッドシートには、script(B) が含まれています。テンプレート スプレッドシートとスクリプトは、プログラムによって正常にコピーされ、他のユーザーと共有されます。テンプレート スクリプトは、onEdit() トリガーを使用して 3 番目のスプレッドシートを変更する必要があります (テンプレート スプレッドシートのコピーの編集は、3 番目のスプレッドシートに同期されます)。単純なトリガーには、3 番目のスプレッドシートにアクセスする権限がありません。インストール可能なトリガーを使用してみましたが、インストール可能な onEdit トリガーをコピーしたスプレッドシートで機能させることに成功しませんでした。

私が達成したいのは、コピーされたスプレッドシートに、3 番目のスプレッドシートに書き込むための個別の承認を必要としない onEdit トリガーを設定することです。

すべてのスプレッドシートは、1 人のユーザーが所有しています。

スクリプト A で次のコードを使用して、スクリプト B でインストール可能なトリガーを作成できます。

「myOnEdit」関数はスクリプト B にあり、3 番目のスプレッドシートに同期するコードが含まれています。これは、コピーされたスプレッドシートが編集された場合にはトリガーされません。

単純な onOpen() 関数から呼び出してスクリプト B でインストール可能なトリガーを作成すると、アクセス許可が原因で失敗します。

次のアドバイスに従ってください:実行に失敗しました: getProjectTriggers を呼び出す権限がありません。 インストール可能なトリガーとそれを呼び出すメニュー項目を作成できます。さらに、ユーザーにインストールをクリックしてトリガーを承認するように求めるメッセージ ボックスを作成できます。

ユーザーがトリガーを手動で承認することなく、3 番目のスプレッドシートを編集する権限を持つスプレッドシートをコピーするときに、onEdit トリガーをプログラムでインストールすることは可能ですか?

よろしくお願いします

トレバー・ストー

0 投票する
1 に答える
2518 参照

javascript - Googleスクリプトの時間駆動タイマーを動的に設定し、gmailでタイマーエラーが多すぎます

gmail 用の Google スクリプトを使用して、150 日以上前のメールを削除しようとしているとマークするスクリプトを作成しています。スクリプトは x 時間後にタイムアウトになるため、その時間内にできるだけ多くのメールを処理し、スクリプトが 2 分後に停止したところから実行を継続するように新しいトリガーを設定します。

私が心配しているのは、その新しいトリガーが設定されて実行された後、特定の日時のトリガーであっても、「現在のアプリのトリガー」に表示されることです。これが一定期間、たとえば 1 か月にわたって頻繁に発生する場合、次のエラーが発生しますか。

「このスクリプトにはトリガーが多すぎます。さらにトリガーを追加する前に、トリガーをスクリプトから削除する必要があります。

または、期限切れの特定の日時トリガーは、ある時点で自動的に削除されますか?

この状況のベストプラクティスを知っている人はいますか?

0 投票する
4 に答える
47968 参照

google-apps-script - IMPORTXML() スプレッドシート関数を定期的に更新する

importxml通常 1 日に 2 回更新される Web サイトからデータを取得する約 30 の関数を含む大きなシートがあります。

importxmlGoogle スプレッドシートのデータを別のシートに保存するために、タイムリーに (8 時間ごとに) 関数を実行したいと考えています。保存はすでに機能していますが、更新は機能していません!

Google スプレッドシートの行更新で 2 時間ごとに実行される可能性があることを読みましたが、スプレッドシートが開かれていないときにシートに追加したため、何も変更も更新もされていないため、これが真実であるとは思いません。

importxmlGoogle スプレッドシートには多くの関数があるため、簡単な方法で関数を「トリガー」するにはどうすればよいimportxmlですか?

0 投票する
3 に答える
32141 参照

google-apps-script - 「SpreadsheetApp.getUi() はこのコンテキストから呼び出すことはできません」

Google スプレッドシートで、HTML から作成されたモーダル ダイアログを表示し、関数を実行して、その HTML プロンプトを自動的に閉じます。

ダイアログは、関数の実行が終了するまで表示されたままになり、その後自動的に消えます。

このプロセスは 3 時間ごとに繰り返す必要があり、スクリプトは私として実行する必要があります (私は他のユーザーが持っていない編集権限を持っているため)。そのため、単純なトリガーはおそらく機能しません (インストール可能なトリガーを作成する必要があることを読みました)。指定された時間に現在のユーザーが誰であるかではなく、関数を自分として実行する場合)

私は現在持っています:

  1. HTML ファイルを使用してモーダル ダイアログを作成する .gs 関数 Magic_Telling
  2. プロンプトの css / html スタイルを含む HTML ファイル、Prompt_Styling。次に、この HTML ファイルは、行を処理する .gs 関数 All_In を呼び出します。

私のコード:

Magic_Telling HTML ファイルからモーダル ダイアログを作成します。


Prompt_Stylingスタイリング プロンプト + 行を処理する関数 All_In を実行するスクリプト用の HTML ファイル

All_In行を処理する関数

スクリプト エディタから MagicTelling を実行すると、問題なく動作します。シーケンス全体が実行されます (プロンプトが表示され、All_In が実行され、プロンプトが消えます)。完全。

次に、[スクリプト エディター] > [リソース] > [現在のプロジェクトのトリガー] に移動してインストール可能なトリガーを作成し、3 時間ごとに Magic_Telling を実行するトリガーを追加しました。(これは「インストール可能なトリガー」だと思います)

しかし、次のエラー メッセージが表示されます。

このコンテキストから SpreadsheetApp.getUi() を呼び出すことはできません。

...関数が Magic_Telling の最初の行に到達したとき

これを回避するにはどうすればよいですか?