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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

0回答

1894閲覧

スプレッドシートのGASによるデータ更新

yasu0716

総合スコア15

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

2クリップ

投稿2021/03/09 01:46

編集2021/03/09 10:33

一つのスプレッドシートの一つのシート内に複数の抽出データエディタを置き、
そのシート内でそれらの抽出データエディタのデータを集計した表を作成しています。
この抽出データエディタを毎日自動更新したく、「マクロを記録」からスクリプトを作成しました。(下記)
しかし、実際にそのままスクリプトを実行すると

Exception: Unexpected error while getting the method or property refreshData on object SpreadsheetApp.DataSourceTable.

とエラーメッセージが出ます。
refreshDataをSpreadsheetApp.DataSourceTableに行う際に予期せぬエラーが発生したとのことですが、解決策が分かりません。

・更新オプションから自動更新も可能ですが、スプレッドシート内には更新したくない抽出データエディタもあるため、一括更新しかできないこの手法は出来ない認識です。
・抽出データエディタが同一シート内にあることが原因だとは思うので、最悪抽出データエディタを別シートにそれぞれ移せばいいのだと思われますが、「マクロを記録」で作成したスクリプトが動かない原因と解決策を知りたいです。

知見をお持ちの方、ご教授いただけますと幸いです。

GAS

1function test() { 2 var spreadsheet = SpreadsheetApp.getActive(); 3 spreadsheet.getRange('BO171').activate(); 4 SpreadsheetApp.enableAllDataSourcesExecution(); 5 spreadsheet.getCurrentCell().getDataSourceTables()[0].refreshData(); 6 spreadsheet.getRange('BJ172').activate(); 7 spreadsheet.getCurrentCell().getDataSourceTables()[0].refreshData(); 8 spreadsheet.getRange('BV172').activate(); 9 spreadsheet.getCurrentCell().getDataSourceTables()[0].refreshData(); 10};

追記
・1ページに複数あった抽出データエディタを独立させて下記実行しても同じエラーが発生しました。

GAS

1function test() { 2 var spreadsheet = SpreadsheetApp.getActive(); 3 spreadsheet.getRange('A1').activate(); 4 SpreadsheetApp.enableAllDataSourcesExecution(); 5spreadsheet.setActiveSheet(spreadsheet.getSheetByName('sheet1'), true); 6 spreadsheet.getCurrentCell().getDataSourceTables()[0].refreshData(); 7};

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問