2つのセル(日付・日時型)を選択すると、差分の日数や時間を計算してくれるGoogle Apps Scriptです。スプレッドシート関数でも出来ますが、任意のセルでちょっと計算したいときに。
特にありません、今お使いのスプレッドシートに組み込めます。
連続した日付と、連続した秒のサンプルデータを用意しました。
まず日付を計算してみます。2つのセルを選択します。
上部メニューの「スクリプト実行」から「2つの日付の差を計算する」を実行します。
結果が表示されます。差分は5日ちょうどで、問題なさそうですね。
日時型のほうでも試してみます。
差分は6秒とでました。大丈夫そうです。
2つのセルが選択されていない場合は、「2つのセルを選択してから実行してください (Ctrl or Commandを使って1セルずつ2つのセル範囲の選択が必要です)」というエラーメッセージが表示されます。
2つのセルのうち、日付や日時型ではないものが含まれると計算ができません。「日付型の値が入っているセルを選択してください」というエラーメッセージが表示されます。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00114/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('2つの日付の差を計算する', 'calculate_between_two_cells');
// メニューを画面に追加する
menu.addToUi();
}
function calculate_between_two_cells() {
const ui = SpreadsheetApp.getUi();
// 開いているスプレッドシートオブジェクトを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// 開いているアクティブシートのオブジェクトを取得
const sheet = ss.getActiveSheet();
// 現在選択されているセルの範囲オブジェクトを取得
const active_ranges = sheet.getActiveRangeList().getRanges();
// 選択範囲が2個ではない場合は計算出来ないのでアラートを出してスクリプトを終了する
if (active_ranges.length != 2) {
ui.alert('2つのセルを選択してから実行してください\\n(Ctrl or Commandを使って1セルずつ2つのセル範囲の選択が必要です)');
return;
}
// セルの値をそれぞれ取得する
let value1 = active_ranges[0].getValue();
let value2 = active_ranges[1].getValue();
// セルの値が日付型かどうかチェックし、どちらかが異なる場合はアラートを出して終了する
if (
Object.prototype.toString.call(value1) != '[object Date]' ||
Object.prototype.toString.call(value2) != '[object Date]') {
ui.alert('日付型の値が入っているセルを選択してください');
return;
}
// 計算するためのミリ秒に変換する
value1 = new Date(value1).getTime();
value2 = new Date(value2).getTime();
// 日付の差を計算し、絶対値を取る(セルの選択順によってはマイナスになりうるため)
const diff = Math.abs(value1 - value2);
// 各単位でそれぞれ計算する
const diff_days = diff / 1000 / 60 / 60 / 24; // 日数の計算
const diff_hours = diff / 1000 / 60 / 60; // 時間の計算
const diff_minutes = diff / 1000 / 60; // 分の計算
const diff_seconds = diff / 1000; // 秒の計算
// メッセージを組み立てて、結果を画面に表示する
const message = `2つのセルの時間差は
日数だと${diff_days}日
時間だと${diff_hours}時間
分だと${diff_minutes}分
秒だと${diff_seconds}秒
です`;
ui.alert(message);
}
シートに入力されている全ての数式を、別シートに出力するGoogle Apps Scriptです。数式のセル参照が連鎖していて、確認が大変だったので作ってみました。
数式でエラーが出ているセルを探してくれるGoogle Apps Scriptです。巨大なシートだとエラーに気づかないこともある・・・?ということで作ってみました。
シート内の数式が入っているセルを探して、色を付けてくれるGoogle Apps Scriptです。他の人から引き継いだシートだと、数式がどこにあるのかわかりにくいので作ってみました。
セルに入力されている数式をすべて消し去るGoogle Apps Scriptです。数式を多用してデータを作ったが、再計算することはないので数値が直接入力されている状態にしたい時・・・などに。
2つのシートを比較して、値や数式に差分があるかどうか教えてくれるGoogle Apps Scriptです。スプレッドシートでもdiffがしたい!という時にどうぞ。
シートに対する変更内容(値の変更)を、同じファイルのすべてのシートに反映(同期)させるGoogle Apps Scriptです。