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

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

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

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

Google Apps Script

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

Q&A

2回答

4012閲覧

Googleスプレッドシートで複数タブ同時に書式変更をしたい

3GO

総合スコア17

Google スプレッドシート

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

Google Apps Script

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

0グッド

1クリップ

投稿2020/01/10 00:43

編集2020/01/14 02:52

###実現したいこと
Googleスプレッドシートで複数タブ同時に書式変更をしたい

###背景
Googleスプレッドシートで、複数タブで同一のフォーマットを用いているんですが、修正が入った際にすべてのタブに一個一個変更を加えていかないといけなく、とても無駄だと感じています。

GASでなんとかできそうなイメージはあるんですが、行追加や列追加はできても、罫線やフォント等の装飾や書式の変更の方法がわからず。。

効率よく実現できる方法があればご教授いただきたいですm(_ _)m


###追記
【どんなシートか】
・自分が運営するメディアサイトの記事データを、1記事(ページ)あたり1行にまとめたシートがある
・ジャンルごとにシートが分かれており、全部で30シート近くある。すべてのシートで書式や項目名(ページタイトル、記事別CT数,記事別CTR等)を同一のフォーマットにしている
・各シートごとに数値実績をまとめた表があり、集計するための関数が組まれている

【現状困っていること】
・シートに項目を追加したり、書式の変更が必要な際に、30近くあるシートひとつずつにそれぞれ手動で変更を加えなければならず、非常に非効率的

【どうしたいか】
・書式や項目のテンプレシートのようなものを作り、そこに行・列の追加や書式の変更を加えると、全シートに反映されるようにしたい

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

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

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

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

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

papinianus

2020/01/13 14:53

回答するには、情報が足りなさすぎるように思います。 修正は、データの修正なのか、書式の修正なのか。また、なぜ全てのシートに同じ書式を設定しないといけないのか、状況がわからないです。 何をしたら、どうなる(どうなって欲しい)のか、可能な限り具体的にお示しいただきたいです。
3GO

2020/01/14 02:53

ご回答ありがとうございます。 追記しましたのでご確認いただけますでしょうか。
guest

回答2

0

GAS

1var range = sheet.getRange(1,1,sheet.getLastRow(),sheet.getLastColumn()) 2var format = range.getNumberFormats(); 3 4range = sheet2.getRange(1,1,sheet2.getLastRow(),sheet2.getLastColumn()) 5range.setNumberFormats(format)

全く同じ場所じゃなければだめだったりしますし、
とりあえず方法ですが、

フォーマットの取得
.getNumberFormats()

フォーマットの貼り付け
.setNumberFormats()

これを使えばうまく行くかもしれない

投稿2020/01/10 01:47

takaD

総合スコア315

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

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

3GO

2020/01/10 01:54

ありがとうございます! ちょっと試してみます
guest

0

メニューに追加したコマンドから、現在のシートの書式を他に展開することを考えました。
範囲指定をしないといけないので、現在のシートの全体と仮定。特に clearFormat はしていない。
条件付き書式がコピーされないかもしれない。

javascript

1function onOpen() { 2 SpreadsheetApp.getActive.addMenu("Custom", [ 3 { 4 name: "書式を撒く", 5 functionName: "q234274" 6 } 7 ]); 8} 9 10function q234274() { 11 const curSheet = SpreadsheetApp.getActiveSheet(); 12 const curSheetName = curSheet.getName(); 13 const curRange = curSheet.getDataRange(); 14 const r = 1; 15 const c = 1; 16 const nr = curRange.getNumRows(); 17 const nc = curRange.getNumColumns(); 18 Spreadsheet.getActive().getSheets().forEach(function (s) { 19 if (s.getName() === curSheetName) { 20 return; 21 } 22 curRange.copyFormatToRange(s, r, c, nr, nc); 23 }); 24}

投稿2020/01/15 12:42

papinianus

総合スコア12705

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

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

3GO

2020/01/16 03:21

なるほど… シンプルでわかりやすいです! ちょっと試してみますね。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問