2022/08/30に更新

【GASで時短】セルの編集内容をすべてのシートに反映させる

スプレッドシート小技実験的

シートに対する変更内容(値の変更)を、同じファイルのすべてのシートに反映(同期)させるGoogle Apps Scriptです。

こんな悩みを解決します


  • フォーマットを作って必要なだけシートをコピーした・・けどちょっと間違ってた!シート1枚ずつ直すのは面倒すぎる・・・。

用意するもの


特にありません。今お使いのスプレッドシートに組み込めます。

このスクリプトで出来ること


  • セルを編集した時、その編集内容をすべてのシートに同期させることができます。
  • 反映されるのはセルの値のみです。罫線や塗りつぶしなどは反映されません。

使い方


1.トリガーの設定

スクリプトをエディタに貼り付けて保存したら、トリガーを設定しましょう。

  • 実行する関数: edit_mirroring
  • デプロイ時に実行: HEAD
  • イベントのソース: スプレッドシートから
  • イベントの種類: 編集時

2.動作確認

何も入力されていない4つのシートを用意しました。

シート1に文字を入力してみます。

シート2に移動してみると・・・反映されています!

シート4にも書いてみます。

シート3を見ると・・・同期されてます!
こうなるようにコードを書いたので当たり前なんですが、なんか不思議な感じがします。

3.注意点

このスクリプトを使う必要がなくなった場合は、かならず削除(もしくはトリガー削除)してください。
うっかりそのまま残しておくと、みんなが編集しはじめたときに大変なことになります・・・。

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00135/index.html
 */

function edit_mirroring(e) {
  // セルの値が変わったときに実行される関数

  // 編集されたセルの値を取得
  const value = e.range.getValue();

  // 編集されたセルのアドレスを取得
  const cell = e.range.getA1Notation();

  // 開いているスプレッドシートのオブジェクトを取得
  const ss = SpreadsheetApp.getActiveSpreadsheet();

  // 編集したシートのオブジェクトを取得
  const edited_sheet = ss.getActiveSheet();

  // 編集したシートに対しては同期処理が不要、後で使うのでシートIDを取得しておく
  const edited_sheet_id = edited_sheet.getSheetId();

  // すべてのシートオブジェクトを取得
  const sheets = ss.getSheets();

  // シートの数だけループ
  for (let i = 0; i < sheets.length; i++) {

    // シートが変更元のシートの場合は何もしない
    if(sheets[i].getSheetId() == edited_sheet_id){
      continue;
    }

    // 値を書き込むため、編集したセル番地をもとに範囲オブジェクトを取得。
    let range = sheets[i].getRange(cell);

    // 値の書き込み
    range.setValue(value);

  }
}

関連するアプリ


【GASで便利に】シート内のすべての数式を表示する

シートに入力されている全ての数式を、別シートに出力するGoogle Apps Scriptです。数式のセル参照が連鎖していて、確認が大変だったので作ってみました。

【GASで時短】数式エラーが出ているセルを通知する

数式でエラーが出ているセルを探してくれるGoogle Apps Scriptです。巨大なシートだとエラーに気づかないこともある・・・?ということで作ってみました。

【GASで便利に】数式が入っているセルに色を付ける

シート内の数式が入っているセルを探して、色を付けてくれるGoogle Apps Scriptです。他の人から引き継いだシートだと、数式がどこにあるのかわかりにくいので作ってみました。

【GASで時短】シート内の数式だけを削除する

セルに入力されている数式をすべて消し去るGoogle Apps Scriptです。数式を多用してデータを作ったが、再計算することはないので数値が直接入力されている状態にしたい時・・・などに。

【GASで時短】2つのシートの差分をチェックする

2つのシートを比較して、値や数式に差分があるかどうか教えてくれるGoogle Apps Scriptです。スプレッドシートでもdiffがしたい!という時にどうぞ。

【GASで時短】2つのセルの時間差を計算する

2つのセル(日付・日時型)を選択すると、差分の日数や時間を計算してくれるGoogle Apps Scriptです。スプレッドシート関数でも出来ますが、任意のセルでちょっと計算したいときに。

タグ一覧

最新のアプリ

人気のアプリ

ページトップに戻る
myfunc.jp