この記事を読むことで、Pythonの標準入力で文字列を取得する方法、GASでは二次元配列として文字列を取得する方法、Python・GASで文字列を連結して出力する方法が学べます。
このコーナーでは、学習コンテンツpaizaラーニングのレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。
GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。
paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験
paizaでの解答はPythonで行いましたが、この記事ではPythonのコードと共に、同じ問題を現在学習中のGASだったらどう解くのか、スプレッドシートでバインドして作ってみました。
正則表現のエントリーポイント (paizaランク D 相当)
問題:
あなたはプログラミングの課題を解いています。
2 つの単語が改行区切りで入力されるので「;」区切りで出力してください。
この記事では、下記の入力例1の場合を例にして、標準入力で2つの単語を取得して「;」を用いて文字列の連結をして出力します。
入力例1
STEINS
GATE
出力例1
STEINS;GATE
ではまず、Pythonで解いてみます。
今回は、paiza.ioを使って解きます。paiza.ioの使い方はこちらから。
■ Pythonでの解き方 ■
下準備として、paiza.ioにこの様に入力します。
(入力例1をそのままioにコピーしただけ。)
手順として、
1:標準入力で最初の単語aを読み込む
2:標準入力で最初の単語bを読み込む
3:「;」も使って文字列連結して出力する
で、行います。
この手順で作成したプログラムを実行した出力結果です。
コードはこちらになります。
#標準入力で最初の文字と次の文字を読み込む
a=input()
b=input()
#「;」も使って文字を連結して出力する
print(a+';'+b)
■ GASでの解き方 ■
では、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。
スプレッドシートの緑のセルに最初の文字「STEINS」を入力しました。
スプレッドシートの灰色のセルに次の文字「GATE」を入力しました。
上記のセル2つはarrayという二次元配列として一度に取得します。そうすることによって、SpreadSheetAppから階層を辿って現在のシートにアクセスするという手間を減らすことが出来ます。
黄色いセルには、二次元配列arrayから2つの文字列を取得し「;」で連結した文字列を出力します。
※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※
手順はこのようになります。
1:スプレッドシートからアクティブシートにアクセスする
2:スプレッドシートの緑のセルに入力された「STEINS」と、灰色のセルに入力された「GATE」の部分を二次元配列arrayとして取得する
3:二次元配列arrayが無事取得出来たことをログで出力して確認する
4:二次元配列array[0][0]とarray[1][0]を「;」も用いて連結して定数strに代入する
5:文字列の連結が出来たことをstrをログ出力して確認する
6:スプレッドシートに二次元配列として取得する配列str2を宣言する
7:str2が二次元配列になるようにstrを追加する
8:str2をスプレッドシートに出力する前にログ出力して確認する
9:スプレッドシートの黄色い所に二次元配列str2を出力する
手順1: スプレッドシートからアクティブシートにアクセスする
const ss=SpreadsheetApp.getActiveSheet();
ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。
手順2:2つの文字列を二次元配列として取得
const array=ss.getRange(1,1,2).getValues();
セルA1から2行分1列分の二次元配列として取得しています。
手順3:取得した二次元配列をログ出力で確認する
2行1列の二次元配列として取得出来たことを確信しました。
console.log(array);
手順4:文字列を連結させる
const str=array[0][0]+”;”+array[1][0];
文字列は二次元配列で、最初の行の0番目のarray[0][0]と、次の行の0番目のarray[1][0]を「;」も使って文字列を連結させて定数strに代入しています。
手順5:文字列の連結をログ出力で確認する
console.log(str);
手順6:連結させた文字列を二次元配列として格納させる配列str2を宣言
let str2=[];
手順7:str2が二次元配列になる様に、strを追加する
str2.push([str]);
手順7:スプレッドシートに出力する前に確認する
console.log(str2);
手順8:スプレッドシートの黄色いセルに連結した文字列を出力する
ss.getRange(4,1).setValue(str2);
実行後のスプレッドシートです。
GASでの全コードはこちらになります。
function sg1() {
//現在のスプレッドシートに階層を辿ってアクセスする
const ss = SpreadsheetApp.getActiveSheet();
//2つの文字列を二次元配列として取得
const array = ss.getRange(1, 1, 2).getValues();
//取得した二次元配列をログ出力で確認する
console.log(array);
//文字列を連結させる
const str = array[0][0] + ";" + array[1][0];
//文字列の連結をログ出力で確認する
console.log(str);
//連結させた文字列を二次元配列として格納させる配列str2を宣言
let str2 = [];
//str2が二次元配列になる様に、strを追加する
str2.push([str]);
//スプレッドシートに出力する前に確認する
console.log(str2);
//スプレッドシートの黄色いセルに連結した文字列を出力する
ss.getRange(4, 1).setValue(str2);
}
宜しかったらコピペしてアレンジして見て下さい。
お疲れ様でした、ブレイクタイムフォトはこちらになります。
お台場自由の女神とレインボーブリッジと、レインボーブリッジの右端から1cmの所の東京タワー
■ 参考文献の紹介■
じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。
初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。
GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。
paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験
プログラミングのアンケートにご協力頂ける方はこちらのフォームで勉強法など色々と教えて下さい。