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

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

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

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

Google Apps Script

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

Q&A

1回答

1482閲覧

複数シートを取得する方法(getSheets()[2,3]ではダメ?)

12589137

総合スコア10

Google スプレッドシート

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

Google Apps Script

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

1グッド

0クリップ

投稿2022/09/25 12:29

前提

スプレッドシートをGASで動かす

実現したいこと

指定のシートのある範囲のセルの値をGASで削除する。

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

var sheet = ss.getSheets()[2];としたため、3つ目のシートの指定した範囲を削除することができた。
一方で、2以外のシートを取得する場合の記述の仕方がわからない。
[2,3]と記述したら3のみ実行された。

該当のソースコード

function celdelete() {

var ss = SpreadsheetApp.getActiveSpreadsheet();

var sheet = ss.getSheets()[2];

var range = sheet.getRange(3,7,51,9);

range.clearContent();
}

Cocode👍を押しています

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

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

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

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

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

guest

回答1

0

forループで1つ1つ処理していくのはいかがでしょうか。

javascript

1function celdelete() { 2 var ss = SpreadsheetApp.getActiveSpreadsheet(); 3 4 for (var i = 0; i < ss.getSheets().length; i++) { 5 var sheet = ss.getSheets()[i]; 6 var range = sheet.getRange(3,7,51,9); 7 range.clearContent(); 8 } 9}

for()の中の、ss.getSheets().lengthでスプレッドシートに存在するシートの数を取得しています。
これにより、存在する全てのシートに処理されます。


全てのシートではなく、●枚目〜●枚目と範囲を指定したい場合は、for()の中を書き換えます。

javascript

1for (var i = 1; i < 5; i++) {...} // 2〜5枚目 2for (var i = 2; i < ss.getSheets().length; i++) {...} // 3枚目〜最後まで 3for (var i = 0; i < ss.getSheets().length - 1 ; i++) {...} // 1枚目〜最後から2枚目まで

補足

.getSheets()[][ ]の中には基本的に1つしか書けません。これは多くのプログラミング言語で採用されているルールです。

.getSheets()では、スプレッドシートの中にあるシートを全て取得した上で、配列というものに格納されています。
[sheet1, sheet2, sheet3]というような形です。

配列の取り扱いルールにより、1番目を参照したいときは、[sheet1, sheet2, sheet3][0]と書きます。
しかし、複数参照したいからといって、[sheet1, sheet2, sheet3][0,2]とは書けません。
つまり、.getSheets()[0,2]とも書けないわけです。

投稿2022/09/25 20:30

編集2022/09/26 18:48
Cocode

総合スコア2314

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

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

YAmaGNZ

2022/09/26 14:45

>[ ]の中には1つしか書けません。これは多くのプログラミング言語で採用されているルールです。 添え字部分でカンマ区切りで書いた場合多次元配列を示す場合もありますし、多くの言語で1つだけしか書けませんというのは誤解を与える可能性があるのではないかと思います。
Cocode

2022/09/26 18:45

ご指摘ありがとうございます!「基本的に」という文言を足しておこうと思いますー!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問