このコーナーでは、プログラミング学習コンテンツpaizaラーニングのレベルアップ問題集を、PythonとGAS(Google Apps Script)の両方で同じ問題を解いたコードを公開している学習ログです。
Python・GASのどちらの言語のコードも可能な限り詳細に解説致します。
GASはスプレッドシートのエディタを使ってコードを書いております。
Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。
(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、安心して下さい。)
問題:
文字列 s, t, u が 3 行で与えられるので、s, t, u の 3 行をそのまま出力してください。
この記事では、下記の入力例1の場合を例にして、文字列の出力を行います。
入力例1
abc
def
ghi
出力例1
abc
def
ghi
ではまず、Pythonで解いてみます。
■ Pythonでの解き方 ■
下準備として、paiza.ioにこの様に入力します。
(入力例1をそのままioにコピーしただけです。)

手順として、
1:問題文から3行と分かっているのでループを3回まわし、ループの中で標準入力で取得した文字列を変数tempに格納して出力する
で、行います。
こちらがPythonのコードになります。
#ループを3回まわし、ループの中で標準入力で取得した文字列を変数tempに格納して出力する
for i in range(3):
temp=input()
print(temp)この手順で作成したプログラムを実行した出力結果です。

■ GASでの解き方 ■
今度は、同じ問題をGASで解いてみます。
まず、この様なスプレッドシートを用意しました。

スプレッドシートの緑のセルに文字列「abc」,灰色のセルに「def」,ピンクのセルに「efg」を入力しました。
これを二次元配列として取得して、黄色いセルにそのままの順番で文字列を出力します。
※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※
手順はこのようになります。
1:SpreadSheetAppからアクティブシートにアクセスする
2:最初の文字列「abc」が入っている緑のセルA1と、その下の灰色のセル「def」が入っているセルA2、最後のピンクのセルA3の「ghi」を配列arrayに3行1列の二次元配列として取得する
3:配列arrayに文字列が取得出来たことをログ出力で確認する
4:スプレッドシートの黄色いセルに二次元配列arrayを出力する
手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする
const ss = SpreadsheetApp.getActiveSheet();
ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。
関数「standardInput3」を書いていきます。Standard Inputは標準入力の意味です。
function standardInput3() {
//SpreadSheetAppから階層を辿って現在のシートにアクセスする
const ss=SpreadsheetApp.getActiveSheet();
}手順2:最初の文字列「abc」が入っている緑のセルA1と、その下の灰色のセルA2の「def」と、最後のピンクのセルA3に入っている「ghi」を配列arrayに3行1列の二次元配列として取得する
const array=ss.getRange(1,1,3).getValues();
valueではなく、valuesと「s」を付けると複数の文字列を取得できます。
コメントが複数行に渡る際は「/*」と「*/」で囲います。
function standardInput3() {
const ss=SpreadsheetApp.getActiveSheet();
/*文字列「abc」が入っている緑のセルA1と
その下の灰色のセル「def」が入っているセルA2と
最後の「ghi」が入っているピンクのセルA3を
配列arrayに3行1列の二次元配列として取得する
*/
const array = ss.getRange(1,1,3).getValues();
}手順3:配列arrayに文字列が出力出来たことをログ出力で確認する
console.log(array);
配列arrayを出力して、A1,A2,A3の文字列が無事に配列に格納されていることを確認します。
function standardInput3() {
const ss=SpreadsheetApp.getActiveSheet();
const array = ss.getRange(1,1,3).getValues();
//配列arrayに文字列が取得出来たことをログ出力で確認する
console.log(array);
}上記の実行結果です。

手順4:スプレッドシートの黄色いセルに二次元配列arrayを出力する
ss.getRange(6,1,array.length).setValues(array);
スプレッドシートのA6である6行目1列目から配列arrayの長さである3行分を確保してarrayを出力しています。
array.lengthでlengthメソッドを使って配列の長さである3を求めています。
これで3行分が確保されて出力されます。
function standardInput3() {
const ss=SpreadsheetApp.getActiveSheet();
const array = ss.getRange(1,1,3).getValues();
console.log(array);
//lengthメソッドを用いて配列arrayの長さを求める
console.log(array.length);
//スプレッドシートの黄色いセルA6から3行分二次元配列arrayを出力する
ss.getRange(6,1,array.length).setValues(array);
}実行後のログとスプレッドシートです。


お疲れ様でした。ブレイクタイムPhotoは、

お台場の中でもオススメスポット、モノレールゆりかもめ線 芝浦ふ頭のレインボーブリッジです。
←前の問題へ 次の問題へ→
■ 関連記事 ■
paizaレベルアップ問題集「標準入力その1」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ
写真クリエイターとしての活動
自己紹介
