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

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

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

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

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

Q&A

2回答

603閲覧

別々のSpreadsheetのスクリプトを、1つのシートから一括で実行したい

mattsuncaca

総合スコア2

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

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

0グッド

1クリップ

投稿2021/12/23 04:32

前提・実現したいこと

Google Spreadsheetにて、別々(URLが別)のシート内の特定のスクリプトを、
一つの画面から実行したいです。(各シートのスクリプト実行有無も管理したい)

現状、100個程度のシートをそれぞれ1つずつ開き、同じスクリプトをポチポチ実行している状態で非常に大変です・・・。(提出先、更新内容が異なるので、URLを分ける必要があります)

例えば、「1つのシートに各シートのURLがズラッと並んでいて、実行するフラグが立っているものは、1回のアクションで各シートのスクリプトが実行できる」

みたいな状況が作れると理想です。

できればSpreadsheetとGoogleAppScriptで実現したいですが、
他に良い実現手段がありそうであればご教示願いたいです!

試したこと

トリガーの活用も考えましたが、
・更新タイミングがまちまち
・スクリプトで引っ張るファイルのアップロード時間がまちまち
・社内の別部署に提出するので、閲覧している状態で実行されると困る

上記の理由から、実行タイミングをこちらでコントロールできる状態にしたいです。

知見をお借りできるとありがたいです。
何卒、よろしくお願いいたします!

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

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

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

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

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

papinianus

2021/12/30 06:54 編集

> Google Spreadsheetにて、別々(URLが別)のシート内の特定のスクリプトを、 ↑ここの"シート"は"スプレッドシート"の意味ですよね。"シート"は"スプレッドシート"内のシートと誤解するので使い分けていただきたいです。 - 特定のスクリプト、について 各スプレッドシートで実行すべき関数は 1 つでしょうか。複数あるとしたら、どれを実行するかどうやって判断していますか。 - 実行するタイミングをこちらでコントロール、について どうやって判断していますか。今はスプレッドシートを開いて確認していると思うのですが、それはスプレッドシートを開くことなく判断できるような内容なのか知りたいです。 - 各スプレッドシートで実行している内容 それぞれ似たような内容なのか、全然違う内容なのか、例えばスクリプトを 1 箇所にまとめられそうなのか、あたりを伺いたいです。 (今あるスクリプトをコピペしなくても、新たに書くか、どれかのスプレッドシートのスクリプトを他のスプレッドシートで使えるように手入れするといった方法が想定できるので、詳しく伺えればと)
guest

回答2

0

①スクリプトIDを取得して、ライブラリに追加
②関数を呼び出す

100個あるのがなかなか厄介ですが、、

投稿2021/12/25 14:42

daltonya

総合スコア109

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

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

0

こんばんは。

フラッシュアイディアで恐縮ですが
・100個程度の各シートのレイアウト、データ構成が同じ且つシート名が同一と仮定
すると

1.作業シートをまとめたスプレッドシートを作成し以下のようなタイトル行のシートを作成。
作業用チェック|スプレッドシートファイル名|ファイルURL|スプレッドシートキー|最終作業日

2.上記作業ファイルにコンテナバインド型のGASを作成し、
作業用チェックが入っているファイルのみ作業するようfor文でコード実装。

各ファイルの呼び出しはSpreadsheetApp.openById('スプレッドシートキー')getSheetByName('シート名');

のような方法で実行すれば1つのスプレッドシートで一元管理自体は可能だと思いました。
ただし処理時間が長いとタイムアウトエラーが発生する可能性があるので、
実用性があるかは分かりませんが参考になれば幸いです。

投稿2021/12/23 11:24

T_mari

総合スコア73

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

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

T_mari

2021/12/23 11:27

すみません。コード箇所のドットが抜けていました。 SpreadsheetApp.openById('スプレッドシートキー').getSheetByName('シート名'); です。 これで取得したシート情報に対して既存のスクリプトの処理を加筆すれば、 シート毎のレイアウトが異なるなどが無ければいけるのではないかと思いました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問