見出し画像

4-4 ちゃんと解説GAS

全体

function myFunction() {
	// スプレッドシートを取得
	const ss = SpreadsheetApp.getActiveSpreadsheet();
	// シートオブジェクトを取得
	const sheet = ss.getSheetByName('シート1');

	// B4:B14セルを選択
	var rangeB = sheet.getRange('B4:B14');
	// セルの値を取得
	var valueB = rangeB.getValues();

	// 格納範囲(出力先)を取得
	var rangeD = sheet.getRange('D4:D14');
	// セルの値を取得
	var valueD= rangeB.getValues();

	// 取得した最初と2番目のセルだけ10倍する
	valueD[0][0] = valueD[0][0] * 10;
	valueD[1][0] = valueD[1][0] * 10;

	// セルの値を格納
	rangeD.setValues(valueD);
}

解説


// スプレッドシートを取得

const ss = SpreadsheetApp.getActiveSpreadsheet();
おまじない
いま使っている(このApps Scriptが格納されている)
すべてのシートを含むスプレッドシート全体を特定し「ss」変数に格納します。

// シートオブジェクトを取得

const sheet = ss.getSheetByName('シート1');
上で特定しss変数に格納されたスプレッドシート全体から
使用するシートを「sheet」 変数へ格納します。
この場合は、('シート1')で指定された「シート1」を指定します。

// B4:B14セルを選択

var rangeB = sheet.getRange('B4:B14');
上で指定した「シート1」が格納された「sheet」変数から
値を取得するセル範囲(B4:B14)を「rangeB」変数へ格納します。
「rangeB」の「B」はB列だよということを忘れないよう命名しました。

// セルの値を取得

var valueB = rangeB.getValues();
上で指定したセル範囲(B4:B14)が格納された「rangeB」変数から
セルの値を取得し、「valueB」変数へ格納します。
「valueB」の「B」はB列だよということを忘れないよう命名しました。

// 格納範囲(出力先)を取得

var rangeD = sheet.getRange('D4:D14');
上で指定した「シート1」が格納された「sheet」変数から
値をセットするセル範囲(D4:D14)を「rangeD」変数へ格納します。
「rangeD」の「D」はD列だよということを忘れないよう命名しました。

// セルの値を取得

var valueD= rangeB.getValues();
3つ上で指定したセル範囲(B4:B14)が格納された「rangeB」変数から
セルの値を取得し、「valueD」変数へ格納します。
「valueD」の「D」は格納する先がD列だよということを忘れないよう命名しました。

これで、B列の値が格納する先の変数「valueD」へ格納されました。

// 取得した最初と2番目のセルだけ10倍する

  valueD[0][0] = valueD[0][0] * 10;
上で取得したB列の値が格納された変数「valueD」の最初のセルだけ値を10倍します。

  valueD[1][0] = valueD[1][0] * 10;
上で取得したB列の値が格納された変数「valueD」の2番目のセルだけ値を10倍します。

<<ここでちょっと高度>>

変数「valueD」にはB4:B14範囲の値が「配列」という形で格納されます。
配列はの2つの単位で格納されます。

valueD[1][0] は
最初の[1]が行を
2番目の[0]が列を
表すので、この変数にはB4:B14範囲から2行目の1列目の値(6)が格納されます。
[1] は0からはじまるので2行目を指します。

配列の図

変数の関連図

変数関連図

宿題

この関数には一つ無駄な処理が含まれていました。
見つけた方はコメントください。

お礼に「いいね」を差し上げます。


この記事が気に入ったらサポートをしてみませんか?