この記事を読むことで、1〜10までの数をループで出力すること、PythonとGASの両方のコードでループの指定方法が異なることが掴めます。
このコーナーでは、プログラミング学習コンテンツpaizaラーニングのレベルアップ問題集を、PythonとGAS(Google Apps Script)の両方で同じ問題を解いたコードを公開している学習ログです。
Python・GASのどちらの言語のコードも可能な限り詳細に解説致します。
GASはスプレッドシートのエディタを使ってコードを書いております。
Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。
(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、ご安心なさって下さい。)
入力
与えられません。
出力
1
2
…
9
10
この問題では、1から10までの数を出力します。
まず、Pythonで解いてみます。
■ Pythonでの解き方 ■
手順として、
1. for文を10回繰り返して値を1から10までと増やしていく
2.ループの中でprintを使って表示する
で行います。
手順1: ループの書き方ですが、
for i in range(1,11):
と記述すると、rangeの中で(最初の値,最後の値未満)になります。
最後が11となっているのは、rangeでは(1,11)と指定した場合、(1,11未満)となるからです。
10までならrange(1,10)だ!と私も最初思いましたので、一度それでコード書いて出力してみます。
まず、range(10)のみの場合の出力結果です。
この場合、iはi=0,i=1 … i=9の10回の出力を繰り返します。
for i in range(10):
print(i)
次に、range(1,10)と指定します。
この場合、i=1,2,… i=9になります。
for i in range(1,10):
print(i)実行結果です。

この書き方では10は出力されませんでした。
1から10までを表示したかったらrange(1,11)と書く。そうすると、1から11未満、1から10まで出力出来ると、納得行くまで検証致しました。
では、正解のコードとその実行結果はこちらになります。
#rangeではその数未満の値が出力される
for i in range(1,11):
print(i)
Pythonは以上です。
■ GASでの解き方 ■
では、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。

この黄色いセルに1から10まで表示します。
スプレッドシートに表示する場合は、二次元配列を作成します。
手順はこのようになります。
1: スプレッドシートからアクティブシートをアクセスする
2: 空の配列arrayを定義する
3:ループで1から10までの数をarray.push([i])で付け加える
4: スプレッドシートに出力前にログに表示してarrayを確認
5:スプレッドシートのセルA1(1,1)から始まる黄色いセルに1から10までの数を出力する
手順1: スプレッドシートからアクティブシートをアクセスする
下記のコードを関数「loop1」に書いて行きます。
function loop1() {
//スプレッドシートからアクティブシートをアクセスする
const ss=SpreadsheetApp.getActiveSheet();
}手順2: 空の配列arrayを定義する
function loop1() {
const ss=SpreadsheetApp.getActiveSheet();
//空の配列arrayを定義する
const array=[];
}手順3: ループで1から10までの数をarray.push[i]で付け加える
GASでのループの書式は、
for(let i=1;i<=10;i++)
になります。
iは変数ですので、ループの中でletで宣言して、i<=10でiが1,2, … , 10と増えて行きます。
また、このままですとarrayは一次元配列になり、二次元配列のスプレッドシートには読み込めないので、ループの中で
array.push([i]);
と、pushを使って追加する際に、[i]と二次元配列になるように追加しています。
function loop1() {
const ss=SpreadsheetApp.getActiveSheet();
const array=[];
//ループで配列arrayに二次元配列として1から10までの数値を格納する
for(let i=1;i<=10;i++){
array.push([i]);
}
}手順4: スプレッドシートに出力前にログに表示してarrayを確認
スプレッドシートに出力する際、配列arrayが二次元配列になっているとスムーズに出力出来ます。
ログ出力で確認をします。
function loop1() {
const ss=SpreadsheetApp.getActiveSheet();
const array=[];
for(let i=1;i<=10;i++){
array.push([i]);
}
//スプレッドシート出力までにログでarrayを確認する
console.log(array);
}実行結果です。

無事にarrayが二次元配列として出力されたことが確認出来ました。
手順5: スプレッドシートのセルA1(1,1)から始まる黄色いセルに1から10までの数を出力する
ss.getRange(1,1,10).setValues(array);
スプレッドシートに出力する際、getRange(1,1,10)でセルA1から10行確保して、そこに配列arrayを押し込むイメージです。
1列分の1列も指定すると、getRangeの中身は(1,1,10,1)になりますが、1列の場合は省略可能です。
setValuesとsが付いているのは、出力する数字が10個と複数形になるからです。
コードと実行結果です。
function loop1() {
const ss=SpreadsheetApp.getActiveSheet();
const array=[];
for(let i=1;i<=10;i++){
array.push([i]);
}
console.log(array);
//スプレッドシートのA1から始まる黄色いセルA1(1,1)から10行分出力する
ss.getRange(1,1,10).setValues(array);
}
GASは以上です。
お疲れ様でした。ブレイクタイムPhotoは、

レゴブロックで作成した白バイです。
ご精読有難うございました。
■ GASの入門書の紹介です ■
詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)
■ 関連記事 ■
paizaレベルアップ問題集「ループその1の1」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ
写真クリエイターとしての活動
自己紹介








