【paiza レベルアップ問題集 】標準入力その2「STEP: 1 2 つの文字列の半角スペース区切りでの分割」をPythonとGASで解いたコード紹介

この記事を読むことで、PythonとGASでsplitメソッドを使って、文字列を空白部分で分割してリスト(配列)に格納し、ループを使ってリストを出力する方法、Pythonではそのループの記述と対応して、内包表記で書く方法、GASでは二次元配列として取得、出力する方法を掲載致しました。

このコーナーでは、プログラミング学習コンテンツのpaizaラーニングのレベルアップ問題集の同じ問題をPythonとGAS(Google Apps Script)で解いたコードを掲載しております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、安心して下さい。)

GAS(Google Apps Script)はスプレッドシートを使ってコードを書いていおります。


1 2つの文字列の半角スペース区切りでの分割 (paizaランク D 相当)

問題:
文字列Hello paizaを、半角スペースで分割して出力してください。

入力される値
なし

期待する出力
Hello paizaを半角スペースで区切り、区切られた文字列を改行区切りにして 2 行で出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。

Hello
paiza

ではまず、Pythonで解いてみます。
今回は、paiza.ioを使って解きます。paiza.ioの使い方はこちらから。

手順として、

1:リストarrayにsplitメソッドを使って空白で文字を区切って配列に入力

2:配列を確認

3:ループで出力

で、行います。

手順1で、文字列「Hello paiza」にsplitメソッドを使って文字を分割します。
その部分のコードです。

#配列arrayにsplitメソッドで空白を区切りにして格納する
array='Hello paiza'.split(' ')

手順2でリストarrayに分割して文字列がそれぞれ格納したことをprint文で確認します。

array='Hello paiza'.split(' ')

#配列arrayをそのまま出力
print(array)

その出力結果です。

リストarrayに格納されたことが確認できたので、arrayをループで出力します。
変数msgに配列の中身を順番に代入して出力しています。
そのコードと出力結果です。

array='Hello paiza'.split(' ')

print(array)

#配列arrayをループで出力
for msg in array:
    print(msg)

このループの所を内包表記で記述したコードと出力結果です。

array='Hello paiza'.split(' ')

print(array)

for msg in array:
    print(msg)
    
#配列arrayをループで出力する所を内表表記で記述
[print(msg) for msg in array]

配列arrayの出力確認や通常のループと内包表記の2度使っている箇所が冗長ですのでコメントアウトしたコードです。

array='Hello paiza'.split(' ')

#print(array)

'''
for msg in array:
    print(msg)
'''
    
#配列arrayをループで出力する所を内表表記で記述
[print(msg) for msg in array]

出力結果です。

最後に提出用にスッキリと最小限のコードに致しました。

array='Hello paiza'.split(' ')

#配列arrayをループで出力する所を内表表記で記述
[print(msg) for msg in array]


今度は、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。

この黄色く塗りつぶしたセルの所に二次元配列として取得した文字列が格納された配列を出力します。空白区切りの文字を分割して配列に格納して、更にループを使って二次元配列にします。

※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※

手順はこのようになります。

1:SpreadSheetAppから階層を辿って現在のシートにアクセスする

2:splitメソッドを使って文字列を分割して配列arrayに代入する

3:分割した文字列が配列arrayに追加出来たことをログ出力で確認する

4:配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する

5:ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する

6:スプレッドシートに出力する前に、ログでarray2を出力して確認する

7:array2をスプレッドシートのセルA2を起点とした黄色いセルに出力する

手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする

const ss = SpreadsheetApp.getActiveSheet();

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

このコードを関数「standardInput1」の中に書いていきます。
Standard Inputで、標準入力の意味です。

function standardInput1() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();
  
}

手順2:splitメソッドを使って文字列を分割して配列arrayに代入する

const array=’Hello paiza’.split(‘ ‘);

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  
  //splitメソッドを使って文字列を分割して配列arrayに代入する
  const array='Hello paiza'.split(' ');

}

手順3:分割した文字列が配列arrayに追加出来たことをログ出力で確認する

console.log(array);

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  
  //分割した文字列が配列arrayに追加出来たことをログ出力で確認する
  console.log(array);

}

手順4:配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する

let array2=[];

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  console.log(array);

  //配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する
  let array2=[];

}

手順5:ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  console.log(array);

  let array2=[];

  //ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する
  for (let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }
}

手順6:スプレッドシートに出力する前に、ログでarray2を出力して確認する

console.log(array2);

コードと出力結果です。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  console.log(array);

  let array2=[];

  for (let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }
  
  //スプレッドシートに出力する前に、ログでarray2を出力して確認する
  console.log(array2);

}

手順7:array2をスプレッドシートのセルA2を起点とした黄色いセルに出力する

ss.getRange(2,1,array2.length).setValues(array2);

セルA2(2,1)を起点として、配列の長さ分だけ黄色い所に出力します。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  console.log(array);

  let array2=[];

  for (let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }
  
  console.log(array2);

  //スプレッドシートのセルA2を起点とした黄色いセルに出力する
  ss.getRange(2,1,array2.length).setValues(array2);

}

実行後のスプレッドシートです。


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

よみうりランドのジュエルミネーションの鉛筆工場です。
Xmasの時期に撮影しました。

←標準入力その1へ          次の問題へ→

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集「標準入力その2」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介

【paiza レベルアップ問題集】標準入力その1 「FINAL問題 【行入力】1,000 行の入力」をPythonとGASで解いたコード紹介

この記事を読むことで、ループを使って1000行分もの文字列をPythonの標準入力で取得・出力する方法と、GASではスプレッドシートを用いて1000行の配列をループで作成して、それを別の列に出力する方法を掲載しております。

このコーナーでは、プログラミング学習コンテンツのpaizaラーニングのレベルアップ問題集の同じ問題をPythonとGAS(Google Apps Script)で解いたコードを掲載しております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、安心して下さい。)


【行入力】1,000 行の入力 (paizaランク D 相当)

問題:
s_1, s_2, s_3, … s_999, s_1000 の 1,000 個の文字列が与えられます。
文字列を与えられた順番通りに出力してください。

この記事では、下記の入力例1の場合を例にして、文字列の出力を行います。

入力例1
paiza0
paiza1
paiza2
paiza3
paiza4
paiza5
paiza6
paiza7
paiza8
paiza9



(以下略)



paiza990
paiza991
paiza992
paiza993
paiza994
paiza995
paiza996
paiza997
paiza998
paiza999

出力例1

paiza0
paiza1
paiza2
paiza3
paiza4
paiza5
paiza6
paiza7
paiza8
paiza9



(以下略)



paiza990
paiza991
paiza992
paiza993
paiza994
paiza995
paiza996
paiza997
paiza998
paiza999

ではまず、Pythonで解いてみます。


下準備として、paiza.ioにこの様に入力します。
(入力例1をそのままioにコピーしたのみで、画像はその一部です。)

(以下略・・・)

手順として、

1:問題文から1000行と分かっているので、ループを1000回まわし、ループの中で標準入力で取得した文字列を変数tempに格納して出力する

で、行います。

Pythonのコードはこちらになります。
また、コメントが複数行に渡る場合は「’」のシングルクォーテーション3つ「”’」か「”」のダブルクォーテーション3つの「”””」でコメントの開始位置と終了位置に掲載します。

'''
問題文から1000行と分かっているのでループを1000回まわし、
ループの中で標準入力で取得した文字列を変数tempに格納して出力する
'''

for i in range(1000):
    temp=input()
    print(temp)

この手順で作成したプログラムを実行した出力結果の一部です。

(以下略・・・)


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

今回はA列の入力欄にpaiza0,paiza1,paiza2・・・paiza997,paiza998,paiza999と1000行ものデータを用意しなければなりません。さすがに手打ちではきついので、まず最初にこのようなコードを作成致しました。

文字列作成準備の手順です。

1:SpreadSheetAppからアクティブシートにアクセスする

2:A列にpaiza0からpaiza999まで出力するのに事前に文字列を格納する配列columnAを宣言

3:ループを使って配列columnAにpaiza0からpaiza999までの値を追加していく

4:スプレッドシートのA列に格納する前にログで確認する

5:スプレッドシートのA列の入力の下に配列columnAの値を格納する

※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※

手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする

const ss = SpreadsheetApp.getActiveSheet();

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

関数「loop1000」の中にコードを書いていきます。

function loop1000() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();

}

手順2:A列にpaiza0からpaiza999まで出力するのに事前に文字列を格納する配列columnAを宣言

let columnA=[];

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();

  //A列にpaiza0からpaiza999まで出力するのに事前に文字列を格納する配列columnAを宣言
  let columnA=[];

}

手順3:ループを使って配列columnAにpaiza0からpaiza999までの値を追加していく

ループ内の変数iを0から999まで変化させて、文字列「paiza」に「+i」でくっつけて、paiza0〜paiza999をループを利用して生成しています。

また、スプレッドシートは二次元配列の為、「 [‘paiza’ + i ] 」としています。

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();
  let columnA=[];

  //ループを使って配列columnAにpaiza0からpaiza999までの値を追加していく
  for(let i=0;i<1000;i++){
    columnA.push(['paiza'+i]);
  }

}

手順4:スプレッドシートのA列に格納する前にログで確認する

console.log(columnA);

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();
  let columnA=[];

  for(let i=0;i<1000;i++){
    columnA.push(['paiza'+i]);
  }

  //A列に出力前にログで二次元配列が生成できたことを確認
  console.log(columnA);

}

実行した所、ログでは1000行は多過ぎて全ては表示しきれませんでしたが、二次元配列の形になっていることは確認出来ました。

(・・・ 途中省略 ・・・)

手順5:スプレッドシートのA列の入力の下に配列columnAの値を格納する

ss.getRange(2,1,columnA.length).setValues(columnA);

paiza0〜paiza999まで出力するセルはA2を起点としているので、2行目1列で(2,1)としています。

その後にこの配列の長さである、columnA.lengthで1000行分を確保しています。

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();
  let columnA=[];

  for(let i=0;i<1000;i++){
    columnA.push(['paiza'+i]);
  }

  console.log(columnA);

  //スプレッドシートのA列の入力の下に配列columnAの値を格納する
  ss.getRange(2,1,columnA.length).setValues(columnA);

}

このコードの実行結果です。

(・・・ 途中省略 ・・・)

スプレッドシートはpaiza0からpaiza999までの1000行表示出来ました。
最初の行が見えるように行固定致しました。


準備が整ったところで、A列の文字入力部分を二次元配列として取得して、C列の黄色いセルにそのまままの順番で文字列を出力します。プログラミングの手順は下記のようになります。

6:SpreadSheetAppからアクティブシートにアクセスする

7:A列の値を定数numに格納する

8:numをC列に出力する

手順6: SpreadSheetAppから階層を辿って現在のシートにアクセスする

これを関数「standardInput5」の中に書いていきます。
Standard Inputで、標準入力の意味です。

function standardInput5() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();

}

手順7:A列の値を定数numに格納する

const num=ss.getRange(2,1,1000).getValues();

function standardInput5() {

  const ss=SpreadsheetApp.getActiveSheet();
  
  //A列の値を定数numに格納する
  const num=ss.getRange(2,1,1000).getValues();

}

手順8:numをC列に出力する

ss.getRange(2,3,1000).setValues(num);

function standardInput5() {

  const ss=SpreadsheetApp.getActiveSheet();
  const num=ss.getRange(2,1,1000).getValues();

  //numをC列に出力する
  ss.getRange(2,3,1000).setValues(num);

}

実行結果です。

(・・・中略・・・)

ここまでで、「標準入力その1」は終了致しました。


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

遊歩道で撮影した桜です。

←前の問題へ    標準入力その2へ→      

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集「標準入力その1」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介

【Python辞書で化学(周期表・元素記号)のお勉強】辞書を使って元素記号をキーに元素名を値にする

この記事を読むことでPythonの辞書について化学の元素を例に、

・辞書をループで取り出す

・標準入力を用いて指定した元素名を表示する

ことが可能になります。

まず、この様な辞書を用意します。(コピペ出来ます)

elements={'H':'水素',
'He':'ヘリウム',
'Li':'リチウム',
'Be':'ベリリウム',
'B':'ホウ素',
'C':'炭素',
'N':'窒素',
'O':'酸素',
'F':'フッ素',
'Ne':'ネオン',
'Na':'ナトリウム',
'Mg':'マグネシウム',
'Al':'アルミニウム',
'Si':'ケイ素',
'P':'リン',
'S':'硫黄',
'Cl':'塩素',
}

まずはこの辞書をループで取り出しますので、下記のコードを追記致します。

for element,name in elements.items():
  print(element+'…「'+name+'」')


今度は標準入力で元素記号を入力すると、その元素の日本語名がリストで表示される様に致します。追加したコードです。

print('元素名を入力>>>',end='')
element=input()
print(elements[element]+'\n')

上記のコードを加えて、ループで取り出した一覧から、好きな元素記号を標準入力で入力します。

実行結果です。
この例では、「Mg」でマグネシウムを入力しています。

これまでのコードです。

elements={'H':'水素',
'He':'ヘリウム',
'Li':'リチウム',
'Be':'ベリリウム',
'B':'ホウ素',
'C':'炭素',
'N':'窒素',
'O':'酸素',
'F':'フッ素',
'Ne':'ネオン',
'Na':'ナトリウム',
'Mg':'マグネシウム',
'Al':'アルミニウム',
'Si':'ケイ素',
'P':'リン',
'S':'硫黄',
'Cl':'塩素',
}

print()

for element,name in elements.items():
  print(element+'…「'+name+'」')

print()

print('元素名を入力>>>',end='')
element=input()
print(elements[element]+'\n')

空行のprint文を入れて、体裁を整えています。

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

払沢の滝、滝壺です。(東京都檜原村)

ご精読誠にありがとうございました。

■ 独習Python ■
Kindle版
単行本(ソフトカバー)

Python自作サンプル集へ戻る

写真クリエイターとしての活動
自己紹介

【Python辞書で歴史(世界史)のお勉強】辞書を使って年号をキーに出来事を値にする

この記事を読むことで、

・Pythonの辞書をループで出力

・辞書のキーに該当する値を取り出す

が可能になります。
例として、世界史の年表を用います。

まず、この様な世界史の年表の辞書を用意(コピペ出来ます)します。

worldHistory={962:'神聖ローマ帝国が成立する',
1066:'ノルマン征服 (ノルマン朝が成立する)',
1202:'第4回十字軍がコンスタンティノープルを占領しラテン帝国を建国する',
1215:'ジョン王がマグナカルタを承認する',
1453:'ビザンツ帝国滅亡(百年戦争終結)',
1479:'スペイン王国が成立する',
1492:'コロンブスがアメリカ大陸を発見する',
1660:'イギリスで王政復古がおこる',
1685:'フランスでナントの勅令が廃止される',
1688:'イギリスで名誉革命がおこる',
1789:'フランス革命がおこる (フランス人権宣言)',
1804:'ナポレオンが皇帝に即位',
1848:'フランスで二月革命がおこる',
1902:'日英同盟の締結',
1905:'ポーツマス条約が結ばれる',}

では、これをループで取り出してみます。

yearをキーにして、その年に起きたことをeventにして、辞書historyにitems()を付けて辞書をループで取り出しています。

for year,event in worldHistory.items():
  print(str(year)+'年に「'+event+'」')

ここまでのコードと実行結果です。

worldHistory={962:'神聖ローマ帝国が成立する',
1066:'ノルマン征服 (ノルマン朝が成立する)',
1202:'第4回十字軍がコンスタンティノープルを占領しラテン帝国を建国する',
1215:'ジョン王がマグナカルタを承認する',
1453:'ビザンツ帝国滅亡(百年戦争終結)',
1479:'スペイン王国が成立する',
1492:'コロンブスがアメリカ大陸を発見する',
1660:'イギリスで王政復古がおこる',
1685:'フランスでナントの勅令が廃止される',
1688:'イギリスで名誉革命がおこる',
1789:'フランス革命がおこる (フランス人権宣言)',
1804:'ナポレオンが皇帝に即位',
1848:'フランスで二月革命がおこる',
1902:'日英同盟の締結',
1905:'ポーツマス条約が結ばれる',}

print()

for year,event in worldHistory.items():
  print(str(year)+'年に「'+event+'」')

print()

次は標準入力で年号を入力すると出来事がリストで表示される様に致します。
追加するコードです。

print('年号を入力>>>',end='')
year=int(input())
print(worldHistory[year]+'\n')

上記のコードを加えて、年表一覧から好きな年号を標準入力で入力します。
ここまでのコードと実行結果です。

worldHistory={962:'神聖ローマ帝国が成立する',
1066:'ノルマン征服 (ノルマン朝が成立する)',
1202:'第4回十字軍がコンスタンティノープルを占領しラテン帝国を建国する',
1215:'ジョン王がマグナカルタを承認する',
1453:'ビザンツ帝国滅亡(百年戦争終結)',
1479:'スペイン王国が成立する',
1492:'コロンブスがアメリカ大陸を発見する',
1660:'イギリスで王政復古がおこる',
1685:'フランスでナントの勅令が廃止される',
1688:'イギリスで名誉革命がおこる',
1789:'フランス革命がおこる (フランス人権宣言)',
1804:'ナポレオンが皇帝に即位',
1848:'フランスで二月革命がおこる',
1902:'日英同盟の締結',
1905:'ポーツマス条約が結ばれる',}

print()

for year,event in worldHistory.items():
  print(str(year)+'年に「'+event+'」')

print()

print('年号を入力>>>',end="")
year=int(input())
print(worldHistory[year]+'\n')

この例では「1688」と入力して、1688年の「イギリスで名誉革命がおこる」と出力させました。

print文の空行を入れて体裁を整えています。

参考にした歴史のウェブサイトはこちらになります。

【世界史】年号語呂合わせ一覧!センター試験対策の暗記に最適

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

多摩川土手です。

ご精読誠にありがとうございました。

■ 独習Python ■
Kindle版
単行本(ソフトカバー)

Python自作サンプル集へ戻る

写真クリエイターとしての活動
自己紹介

【paiza レベルアップ問題集】標準入力その1 「STEP: 4 10 行の入力」をPythonとGASで解いたコード紹介

このコーナーでは、プログラミング学習コンテンツpaizaラーニングレベルアップ問題集を、PythonとGAS(Google Apps Script)の両方で同じ問題を解いたコードを公開している学習ログです。

Python・GASのどちらの言語のコードも可能な限り詳細に解説致します。
GASはスプレッドシートのエディタを使ってコードを書いております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、安心して下さい。)


10 行の入力 (paizaランク D 相当)

問題:
s_1, s_2, s_3, … s_9, s_10 の 10 個の文字列が与えられます。
文字列を与えられた順番通りに出力してください。

この記事では、下記の入力例1の場合を例にして、文字列の出力を行います。

入力例1
one
two
three
four
five
six
seven
eight
nine
ten

出力例1
one
two
three
four
five
six
seven
eight
nine
ten

ではまず、Pythonで解いてみます。


下準備として、paiza.ioにこの様に入力します。
(入力例1をそのままioにコピーしたのみです。)

手順として、

1:問題文から10行と分かっているのでループを10回まわし、ループの中で標準入力で取得した文字列を変数tempに格納して出力する

で、行います。

Pythonのコードはこちらになります。
尚、Pythonでコメントが複数行に渡る場合はコメント開始と終了の箇所に「’」3つの「”’」と打ちます。 (「”」を3つの「”””」でも可能です。)

'''
問題文から10行と分かっているのでループを10回まわし、
ループの中で標準入力で取得した文字列を
変数tempに格納してから出力する
'''

for i in range(10):
    temp=input()
    print(temp)

実行結果です。


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

スプレッドシートの緑のセルに文字列「one,two,・・・,nine,ten」を入力しました。
これを二次元配列として取得して、黄色いセルにそのまままの順番で文字列を出力します。

※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※

手順は以下の様になります。

1:SpreadSheetAppからアクティブシートにアクセスする

2:スプレッドシートの緑のセルの文字列「one,two,・・・,nine,ten」が入っている箇所をgreenArrayに10行1列の二次元配列として取得する

3:配列greenArrayに文字列が取得出来たことをログ出力で確認する

4:スプレッドシートの黄色いセルに二次元配列greenArrayを出力する

手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする

const ss = SpreadsheetApp.getActiveSheet();

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

関数「standardInput4」の中にコードを書いていきます。
standardInputで標準入力の意味です。

function standardInput4() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();
  
}

手順2:スプレッドシートの緑のセルの文字列「one,two,・・・,nine,ten」が入っている箇所を緑の配列の意味のgreenArrayに10行1列の二次元配列として取得する

const greenArray=ss.getRange(2,1,10).getValues();

valueではなく、valuesと「s」を付けると複数の文字列を取得できます。

function standardInput4() {

  const ss=SpreadsheetApp.getActiveSheet();

  //スプレッドシートの緑のセルgreenArrayに10行1列の二次元配列として取得する
  const greenArray=ss.getRange(2,1,10).getValues();

}

手順3:配列greenArrayに文字列が二次元配列として取得出来たことをログ出力で確認する

console.log(greenArray);

このコードで配列のログ出力を行います。

function standardInput4() {

  const ss=SpreadsheetApp.getActiveSheet();
  const greenArray=ss.getRange(2,1,10).getValues();

  //配列greenArrayに文字列が取得出来たことをログ出力で確認する 
  console.log(greenArray);

}

こちらが実行結果です。

手順4:スプレッドシートの黄色いセルに二次元配列greenArrayを出力する

ss.getRange(2,3,greenArray.length).setValues(greenArray);

スプレッドシートの2行目3列目(C2)から配列greenArrayの長さである10行分を確保して配列を出力しています。

function standardInput4() {

  const ss=SpreadsheetApp.getActiveSheet();
  const greenArray=ss.getRange(2,1,10).getValues();
  console.log(greenArray);
 
  //スプレッドシートの黄色いセルに二次元配列greenArrayを出力する
  ss.getRange(2,3,greenArray.length).setValues(greenArray);

}

実行後のスプレッドシートです。

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

石神井公園(東京都練馬区)でサイクルボートを漕ぎながら撮影した写真

←前の問題へ          次の問題へ→

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集「標準入力その1」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介

【paiza レベルアップ問題集 】「標準入力その1 STEP: 3 3 行の入力」PythonとGASで解いたコード紹介

このコーナーでは、プログラミング学習コンテンツpaizaラーニングレベルアップ問題集を、PythonとGAS(Google Apps Script)の両方で同じ問題を解いたコードを公開している学習ログです。

Python・GASのどちらの言語のコードも可能な限り詳細に解説致します。
GASはスプレッドシートのエディタを使ってコードを書いております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、安心して下さい。)


3 行の入力 (paizaランク D 相当)

問題:
文字列 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は、

お台場の中でもオススメスポット、モノレールゆりかもめ線 芝浦ふ頭のレインボーブリッジです。

←前の問題へ          次の問題へ→

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集「標準入力その1」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介

【paiza レベルアップ問題集 】「標準入力その1 STEP: 2 2 行の入力」PythonとGASの両方で解いたコード紹介

このコーナーでは、プログラミング学習コンテンツpaizaラーニングレベルアップ問題集を、PythonとGAS(Google Apps Script)の両方で同じ問題を解いたコードを公開している学習ログです。

Python・GASのどちらの言語のコードも可能な限り詳細に解説致します。
GASはスプレッドシートのエディタを使ってコードを書いております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、安心して下さい。)


2 行の入力 (paizaランク D 相当)

問題:
文字列 s と t が 2 行で与えられるので、s と t の 2 行をそのまま出力してください。

この記事では、下記の入力例2の場合を例にして、文字列の出力を行います。

入力例2
heisei31
reiwa1

出力例2
heisei31
reiwa1

ではまず、Pythonで解いてみます。


■ Pythonでの解き方 ■

下準備として、paiza.ioにこの様に入力します。
(入力例2をそのままioにコピーしただけです。)

手順として、

1:標準入力で最初の文字列sを読み込む

2:標準入力で次の文字列tを読み込む


3:print文でsを出力する


4:print文でtを出力する

この様に行います。

この手順に沿って作成したPythonのコードと実行した出力結果です。

#標準入力で最初の文字列sを読み込む
s=input()
#標準入力で次の文字列tを読み込む
t=input()

#print文でsを出力する
print(s)
#print文でtを出力する
print(t)


■ GASでの解き方 ■

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

スプレッドシートの緑のセルA1に文字列「heisei31」を入力して、灰色のセルにA2に「reiwa 1」を入力して、それらを二次元配列として取得します。
最後にその二次元配列を黄色いセルにそのままま文字列を出力します。

※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※

手順はこのようになります。

1:SpreadSheetAppからアクティブシートにアクセスする

2:最初の文字列「heisei31」が入っている緑のセルとその下の灰色のセル「reiwa1」が入っているセルを配列arrayに2行1列の二次元配列として取得する

3:配列arrayに文字列が出力出来たことをログ出力で確認する

4:スプレッドシートの黄色いセルに二次元配列arrayを出力する

手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする

const ss = SpreadsheetApp.getActiveSheet();

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

関数「standardInput2」の中に書いていきます。
Standard Inputで標準入力の意味です。

function standardInput2() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();

}

手順2:最初の文字列「heisei31」が入っている緑のセルと、その下の灰色のセル「reiwa1」が入っているセルを配列arrayに2行1列の二次元配列として取得する

const array=ss.getRange(1,1,2).getValues();

セルA1は1行目1列目ですので、(1,1)と表せて、そこから2行分ですので、(1,1,2)となります。1列取得のみですので、(1,1,2,1)の最後の1は略せます。

2文字分ですので、getValuesと「s」が付きます。
また、複数行に渡るコメントの場合は、「/*」と「*/」で囲います。

function standardInput2() {

  const ss=SpreadsheetApp.getActiveSheet();

  /*最初の文字列「heisei31」が入っている緑のセルと、
  その下の灰色のセル「reiwa1」が入っているセルを
  配列arrayに2行1列の二次元配列として取得する*/

  const array=ss.getRange(1,1,2).getValues();

}

手順3:配列arrayに文字列が出力出来たことをログ出力で確認する

console.log(array);

スプレッドシートから取得した文字列を格納した配列arrayが無事にログ出力されることを確認します。

function standardInput2() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,1,2).getValues();

 //配列arrayの出力確認
  console.log(array);

}

手順4:スプレッドシートの黄色いセルに二次元配列arrayを出力する

ss.getRange(5,1,array.length).setValues(array);

スプレッドシートの黄色いセルA5(5,1)とA6に、配列arrayの長さである2行1列分を確保してarrayを出力しています。

array.lengthで、lengthメソッドを使っていることで、配列の長さである2を表しています。

function standardInput2() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,1,2).getValues();

  
  console.log(array);

  //lengthメソッドで配列の長さ2が出力される
  console.log(array.length);

  //スプレッドシートの黄色いセルに二次元配列arrayを出力する
  ss.getRange(5,1,array.length).setValues(array);

}

実行後のログとスプレッドシートです。


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

お台場自由の女神と、レインボーブリッジと、レインボーブリッジの右から1cmぐらいの所にある東京タワーです。

←前の問題へ          次の問題へ→

■ 関連記事 ■

paizaレベルアップ問題集「標準入力その1」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介

【Python辞書で歴史(日本史)のお勉強】辞書を使って年号をキーに出来事を値にする

この記事を読むことで、

・Pythonの辞書をループで取り出せる

・キーに該当する値を取り出せる

ことが可能になります。
例として、日本史の年号をキーに、その年の出来事を値にします。

こちらが用意する辞書です。

#日本史の年号をキーに出来事を値にした辞書を作成
japaneseHistory={607:'小野妹子ら遣隋使派遣',
720:'日本書紀の編纂',
1086:'白河上皇の院政始まる',
1221:'承久の乱',
1338:'室町幕府の成立',
1588:'刀狩り',
1603:'江戸幕府の成立',
1709:'新井白石の政治',
1837:'大塩平八郎の乱',
1853:'ペリー来航',
1877:'西南戦争',
1902:'日英同盟'}

参考にした歴史のウェブサイトはこちらになります。

では、この辞書をループで取り出してみます。
コードと実行結果です。

#日本史の年号をキーに出来事を値にした辞書を作成
japaneseHistory={607:'小野妹子ら遣隋使派遣',
720:'日本書紀の編纂',
1086:'白河上皇の院政始まる',
1221:'承久の乱',
1338:'室町幕府の成立',
1588:'刀狩り',
1603:'江戸幕府の成立',
1709:'新井白石の政治',
1837:'大塩平八郎の乱',
1853:'ペリー来航',
1877:'西南戦争',
1902:'日英同盟'}

print()

for year,event in japaneseHistory.items():
  print(str(year)+'年には「'+event+'」がありました。')

print()


今度は標準入力で年号を入力すると出来事がリストで表示される様に致します。

print('年号を入力して下さい>>>',end="")
year=int(input())
print('その年には【'+japaneseHistory[year]+'】がありました')

辞書の一覧にある年から好きな年号を標準入力で入力して、出来事を表示するコードと
実行結果です。ループの表示を参考に、好きな年号を入力します。

#日本史の年号をキーに出来事を値にした辞書を作成
japaneseHistory={607:'小野妹子ら遣隋使派遣',
720:'日本書紀の編纂',
1086:'白河上皇の院政始まる',
1221:'承久の乱',
1338:'室町幕府の成立',
1588:'刀狩り',
1603:'江戸幕府の成立',
1709:'新井白石の政治',
1837:'大塩平八郎の乱',
1853:'ペリー来航',
1877:'西南戦争',
1902:'日英同盟'}

print()

for year,event in japaneseHistory.items():
  print(str(year)+'年には「'+event+'」がありました。')

print()

print('好きな年号を半角数字で入力して下さい>>>',end="")
year=int(input())
print('その年には【'+japaneseHistory[year]+'】がありました。')

print()

この例では1853と入力すると、「ペリー来航」と出力されました。


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

マクセルアクアパーク品川(水族館)の「ノコギリエイ」です。

怖かわいいです(笑)

ご精読誠にありがとうございました。

■ 独習Python ■
Kindle版
単行本(ソフトカバー)

Python自作サンプル集へ戻る

写真クリエイターとしての活動
自己紹介

【paiza レベルアップ問題集 】「標準入力その1 STEP: 1 1 行の入力」PythonとGASの両方で解いたコード紹介

このコーナーでは、プログラミング学習コンテンツpaizaラーニングレベルアップ問題集を、PythonとGAS(Google Apps Script)の両方で同じ問題を解いたコードを公開している学習ログです。

Python・GASのどちらの言語のコードも可能な限り詳細に解説致します。
GASはスプレッドシートのエディタを使ってコードを書いております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、安心して下さい。)


1 行の入力 (paizaランク D 相当)

問題:
文字列 s が 1 行で与えられるので s をそのまま出力してください。

この記事では、下記の入力例1の場合を例にして、文字列の出力を行います。

入力例1
paiza

出力例1
paiza

ではまず、Pythonでのコードを掲載致します。


■ Pythonでの解き方 ■

下準備として、paiza.ioにこの様に入力します。
(入力例1をそのままioにコピーしただけ。)

手順として、

1:標準入力で最初の単語wordを読み込む

2:print文でwordを出力する

で、行います。
コードはこちらになります。

#標準入力で文字列を読み込む
word=input()

#その文字列を出力する
print(word)

この手順で作成したプログラムを実行した出力結果です。


■ GASでの解き方 ■

では、同じ問題をGASで解いてみます。
まず、スプレッドシートに下記の様に入力及びセルの塗り潰しを致しました。

スプレッドシートの緑のセルに文字列「paiza」を入力しました。
これを黄色いセルにそのままま文字列を出力します。

※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※

手順はこのようになります。

1:スプレッドシートからアクティブシートにアクセスする

2:緑のセルから文字列を取得する

3:文字列が出力出来たことをログ出力で確認する

4:文字列をスプレッドシートに二次元配列として取得する配列word2を宣言する

5:word2が二次元配列になる様に、wordを追加する

6:スプレッドシート出力前にログで確認する

7:スプレッドシートの黄色いセルに出力する

手順1: スプレッドシートからアクティブシートにアクセスする

const ss=SpreadsheetApp.getActiveSheet();

関数「standardInput1」の中にコードを書いていきます。
standard input は、標準入力のことです。

function standardInput1() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();
  
}

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

手順2:緑のセルから文字列を取得する

const word=ss.getRange(1,1).getValue();

緑のセルはA1であり、(1,1)と表記出来ます。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();

  //緑のセルA1から文字列を取得する
  const word=ss.getRange(1,1).getValue();

}

手順3:文字列が出力出来たことをログ出力で確認する

console.log(word);

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const word=ss.getRange(1,1).getValue();

  //文字列が出力出来たことをログ出力で確認する
  console.log(word);

}

手順4:文字列をスプレッドシートに二次元配列として取得する配列word2を宣言する

let word2=[];

スプレッドシートは縦×横の二次元ですので、二次元配列として出力する準備を行います。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const word=ss.getRange(1,1).getValue();
  console.log(word);

  //文字列をスプレッドシートに二次元配列として取得する配列word2を宣言する
  let word2=[];

}

手順5:word2が二次元配列になる様に、wordを追加する

word2.push([word]);

pushメソッドを使って、[ ]の中にwordを入れて二次元配列にしています。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const word=ss.getRange(1,1).getValue();
  console.log(word);


  let word2=[];

  //word2が二次元配列になる様に、pushメソッドを使ってwordを追加する
  word2.push([word]);

}

手順6:スプレッドシート出力前にログで確認する

console.log(word2);

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const word=ss.getRange(1,1).getValue();
  console.log(word);


  let word2=[];
  word2.push([word]);

  //スプレッドシート出力前にログで確認する
  console.log(word2);

}

手順7:スプレッドシートの黄色いセルに出力する

ss.getRange(3,1).setValue(word2);

黄色いセルはセルA3ですので、3行目1列目で(3,1)と表記します。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const word=ss.getRange(1,1).getValue();
  console.log(word);


  let word2=[];
  word2.push([word]);
  console.log(word2);

  //スプレッドシートの黄色いセルに出力する
  ss.getRange(3,1).setValue(word2);

}

実行後のスプレッドシートです。


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

ここは本当に、東京23区ですか??と驚く様な、世田谷区の等々力渓谷で水と森林にたっぷりと癒されました。

次の問題へ→

■ 関連記事 ■

paizaレベルアップ問題集「標準入力その1」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介

【paiza レベルアップ問題集】 「STEINS;GATE FINAL 正則表現のエントリーポイント」をPythonとGASの両方で解いたコードの紹介

この記事を読むことで、

・Pythonの標準入力で文字列を取得する方法

・GASでは二次元配列として文字列を取得する方法

・Python・GASで文字列を連結して出力する方法

についての概要が掴めます。

このコーナーでは、プログラミング学習コンテンツpaizaラーニングレベルアップ問題集を、PythonとGAS(Google Apps Script)の両方で同じ問題を解いたコードを公開している学習ログです。

Python・GASのどちらの言語のコードも可能な限り詳細に解説致します。
GASはスプレッドシートのエディタを使ってコードを書いております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、安心して下さい。)

正則表現のエントリーポイント (paizaランク D 相当)

問題:
あなたはプログラミングの課題を解いています。
2 つの単語が改行区切りで入力されるので「;」区切りで出力してください。

この記事では、下記の入力例1の場合を例にして、標準入力で2つの単語を取得して「;」を用いて文字列の連結をして出力します。

入力例1
STEINS
GATE

出力例1
STEINS;GATE

ではまず、Pythonで解いてみます。

下準備として、paiza.ioにこの様に入力します。
(入力例1をそのままioにコピーしただけです。)

手順として、

1:標準入力で最初の単語a(今回はSTEINS)を読み込む

2:標準入力で最初の単語b (GATE)を読み込む


3:「;」を使って2つの文字列を連結して出力する

で、行います。

この手順で作成したプログラムを実行した出力結果です。

コードはこちらになります。

#標準入力で最初の文字と次の文字を読み込む
a=input()
b=input()

#「;」を用いて文字を連結して出力する
print(a+';'+b)

Pythonでの解き方は以上になります。


では、同じ問題を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();

function steinsGate() {

  //現在のスプレッドシートに階層を辿ってアクセスする
  const ss=SpreadsheetApp.getActiveSheet();
  
}

関数steinsGateの中に、まずはSpreadsheetAppから階層を辿ってアクティブシートにアクセスして定数ssに代入しています。

手順2:2つの文字列を二次元配列として取得

const array=ss.getRange(1,1,2).getValues();

セルA1から2行分1列分の二次元配列として取得しています。

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();

  //2つの文字列を二次元配列として取得
  const array=ss.getRange(1,1,2).getValues();

}

手順3:取得した二次元配列をログ出力で確認する
2行1列の二次元配列として取得出来たことをログで出力して確認します。

console.log(array);

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,1,2).getValues();

  //取得した二次元配列をログ出力で確認する
  console.log(array);

}

手順4:文字列を連結させる

const str=array[0][0]+”;”+array[1][0];

文字列は二次元配列で、最初の行の0番目のarray[0][0]と、次の行の0番目のarray[1][0]を「;」で文字列を連結させて定数strに代入しています。

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,1,2).getValues();
  console.log(array);

  //文字列を連結させる
  const str=array[0][0]+";"+array[1][0];
}

手順5:文字列の連結をログ出力で確認する

console.log(str);

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,1,2).getValues();
  console.log(array);

  const str=array[0][0]+";"+array[1][0];
  
  //文字列の連結をログ出力で確認する
  console.log(str);

}

手順6:連結させた文字列を二次元配列として格納させる配列str2を宣言

let str2=[];

スプレッドシートは縦横の二次元配列なので、それに対応した、新たに出力用の配列を作成します。

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();
  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=[];
 
}

手順7:str2が二次元配列になる様に、strを追加する

str2.push([str]);

配列に追加するpushメソッドを使う際、[str]を入れることで二次元配列にしてスプレッドシートに出力出来る準備をするので、[ ]を必ず入力します。

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,1,2).getValues();
  console.log(array);

  const str=array[0][0]+";"+array[1][0];
  console.log(str);

  let str2=[];

  //str2が二次元配列になる様に、strを追加する
  str2.push([str]);

}

手順7:スプレッドシートに出力する前に確認する

console.log(str2);

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,1,2).getValues();
  console.log(array);

  const str=array[0][0]+";"+array[1][0];
  console.log(str);

  let str2=[];
  str2.push([str]);

  //スプレッドシートに出力する前に確認する
  console.log(str2);

}

二次元配列になっていますね。
これでスプレッドシートに出力する準備が整いました。

手順8:スプレッドシートの黄色いセルA4に連結した文字列を出力する

ss.getRange(4,1).setValue(str2);

セルA4は4行1列ですので、(4,1)と書き表せます。

function steinsGate() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(1,1,2).getValues();
  console.log(array);

  const str=array[0][0]+";"+array[1][0];
  console.log(str);

  let str2=[];
  str2.push([str]);
  console.log(str2);

  //スプレッドシートの黄色いセルに連結した文字列を出力する
  ss.getRange(4,1).setValue(str2);

}

実行後のスプレッドシートです。


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

お台場自由の女神とレインボーブリッジと、レインボーブリッジの右端から1cmの所の東京タワーです。

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集_PythonとGASのコード紹介トップに戻る
初めてのGASに戻る


自己紹介