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

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

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

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

Google Apps Script

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

Q&A

解決済

1回答

8610閲覧

【GAS】スプレッドシートでピボットテーブルのデータ範囲を自動更新

qxg8725

総合スコア3

Google スプレッドシート

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

Google Apps Script

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

0グッド

0クリップ

投稿2021/06/27 11:44

編集2021/06/27 14:01

前提・実現したいこと

スプレッドシートでピボットテーブルのデータ範囲を自動更新させるコードを書きました。
下記のサイトを参考にして作成したのですが、どうしてもエラーが出てしまいます。
解決方法についてお力をお貸し頂ければと思いますので、よろしくお願いいたします。

参考:https://sites.google.com/site/scriptsexamples/learn-by-example/google-sheets-api/pivot

発生している問題・エラーメッセージ

下記の部分でシートが定義されていませんとエラーが出てしまいます。
var sheets = Sheets.Spreadsheets.get(ss.getId(), {fields: fields}).sheets;
エラー ReferenceError: Sheets is not defined

該当のソースコード

function updatePivotTable(pivotTableSheetName) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var pivotTableSheetId = ss.getSheetByName('ピボット テーブル 1').getSheetId(); var fields = "sheets(properties.sheetId,data.rowData.values.pivotTable)"; var sheets = Sheets.Spreadsheets.get(ss.getId(), {fields: fields}).sheets; for (var i in sheets) { if (sheets[i].properties.sheetId == pivotTableSheetId) { var pivotTableParams = sheets[i].data[0].rowData[0].values[0].pivotTable; break; } } var sourceSheetId = pivotTableParams.source.sheetId || 0; for(var [i, sht] in ss.getSheets()) { if(sourceSheetId == sht.getSheetId()) { var sourceSheet = sht; } } // ソース範囲を更新します pivotTableParams.source.endRowIndex = sourceSheet.getLastRow(); // 更新されたパラメータを送り返します var request = { "updateCells": { "rows": { "values": [{ "pivotTable": pivotTableParams }] }, "start": { "sheetId": pivotTableSheetId }, "fields": "pivotTable" } }; Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId()); }

試したこと

下記の方法などを取りましたが、エラーが出てしまい、私の力では解決できませんでした。
var sheet = spreadsheet.getSheetByName(name);

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

guest

回答1

0

ベストアンサー

(「新しいエディタ画面」で作成されているという前提です)

・左側にある「サービス」の横の「+」をクリックして、リストから「Google Sheets API」を選択して追加してください。

イメージ説明

・あと、下記の部分はエラーになると思うので、下記のように修正してください。

for(var [i, sht] in ss.getSheets()) {  // エラー ↓ for(const sht of ss.getSheets()) { // 修正後

投稿2021/06/28 00:07

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

qxg8725

2021/06/28 07:00

qnoir様 ご回答ありがとうございます。 無事更新できました!! 画像付きで分かりやすく、エラーまでご指摘いただき、本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問