プログラミングの疲れ目対策と視力維持に向けて

この記事では、プログラミングで長時間PCと睨めっこして目が疲れてしまった方向けの疲れ目対策と、これ以上視力が下がらないようにするための方法をまとめました。
目のストレッチと疲れ目に効く手のツボを紹介します。

トップページに戻る
はじめてのWeb制作(HTML/CSSドットインストール無料レッスンノート)
プログラミング学習で関わってはいけない人達と逃げるべき環境
プログラミングと資格について
自己紹介ページ

こちらのサイトから、私がよく行っている目のストレッチを引用してまとめました。
マイケアさんのサイトです。

ギュッぱ体操 〜目の渇きや視力低下防止に〜
・目をギュッと閉じてパッと開ける
・頭を動かさないように、黒目を右→左→上→下→に動かす 4〜5回繰り返す。
・30分に一度ぐらいやる

パチパチ体操 〜PC、スマホによる疲れ目に効果的〜
・1分ほど目を開いたり閉じたりする。
・終わったらまぶたを閉じてしばらく休ませる。
・一日に数回行うと良い

ピント合わせ体操 〜 目の機能をリフレッシュ 〜
・近くのものを10秒から20秒見つめる
・視線をなるべく遠くに移し、5分ほど眺める
・1日に4回から5回ほど

次にこちらのサイトのトレーニングを紹介します。先進会眼科さんのサイトです。
自宅で視力回復?眼のためにできるトレーニング5つのやり方|注意点も解説

眼球ぐるぐる
・目の動きをなめらかにして、ものを見やすくするのに役立つ。
・一点ばかり集中していると、目の筋肉が固くなり、運動不足になる。目の末梢神経が悪くなり、酸素や栄養が行かなくなるので優しくほぐす運動。

やり方:
・両方の目をゆっくり大きく回転させる。
・1周10秒ぐらいかける。右回り2〜3周、左回り2〜3周、寄り目にして5秒キープ。

最後に手のツボです。
Medicalook(メディカルック)さんのサイトです。
眼精疲労「手のツボ」を3つご紹介!疲れ目・かすみ目を解消したい方へ

こちらのサイトでは、

・親指と人差し指の間
・親指
・小指

のツボを紹介しています。
手のツボなのでメガネをしたままでも押せますね。
また、目の周りや眉毛にも疲れ目に効くツボが集中しているので、
もっとじっくり目の疲れを取りたい方はメガネを外して目の周りや眉毛の辺りをゆっくり押して、目を労ってください。

追加で、目の周りのツボの紹介です。赤岩治療院さんの図解が分かりやすかったので、ここで紹介します。

トップページに戻る
はじめてのWeb制作(HTML/CSSドットインストール無料レッスンノート)
プログラミング学習で関わってはいけない人達と逃げるべき環境
プログラミングと資格について
自己紹介ページ

プログラミングのアンケートにご協力頂ける方はこちらのフォームで勉強法など色々と教えて下さい。

paiza レベルアップ問題集 標準入力その7「STEP: 3 1 行目で与えられる N 個の文字列の入力」をPythonとGASの両方で解いたコードの紹介

この記事を読むことで、Pythonで標準入力とsplitなどのメソッドを用いて、5つの単語の数(数値)と、全ての単語(文字列)をリスト(配列)として取得して、単語のみをループ内で出力することが可能になります。

GASではスプレッドシートで値を取得して、二次元配列にして出力しています。

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

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

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

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


1 行目で与えられる N 個の文字列の入力 (paizaランク D 相当)

問題:
1 行目で、整数 N と、続けて N 個の文字列 s_1, … , s_N が半角スペース区切りで与えられます。
s_1, … , s_N を改行区切りで出力してください。

入力例1
5 paiza 813 paiza813 Hello World!


出力例1
paiza
813
paiza813
Hello
World!

今回は入出力例1を用います。

ではまず、Pythonで解いて行きます。


手順として、

1: 1行目の単語の個数5と、5つの単語を標準入力でリスト(配列)arrayに取得する

2: 単語の個数5個の5を変数Nに、N=int(array[0])と数値形式で代入する


3: リストarrayに対し、delメソッドでNに代入した5を消去する

4: リストに残った単語をループで出力する

・基本的なループ
・リスト出力に適したループ
・上記の内包表記

の4ステップで行います。

まず、準備として、paiza.ioにこのように入力します。
(入力例1 をコピペしたのみ)

次にこの1行をリスト(配列)として下記のメソッドなどを用いて取得します。

区切り文字は半角スペースで、リストarrayに標準入力を用いて取得します。
複数のメソッドなどが登場しているので、この例に沿って役割をまとめます。

input … 標準入力で文字や数値を取得する

split … 半角スペースなどの指定の区切り文字で分割して取得する

str … 上記で取得する対象が単語(文字列)である


map … まとめて適用


list … リスト(配列)変換

下記のコードで標準入力と入力とリストarrayの出力を行います。

#1行目の単語の個数5個と単語を標準入力でリストarrayに取得する
array=list(map(str,input().split(' ')))

#リストとして取得できたことを確認する
print(array)

単語の個数5個も含めて、無事にarrayに標準入力で取得出来たことが確認出来ました。


単語の個数である「5」は出力しないので、変数「N」に整数として代入します。

N=int(array[0])

下記のコードと出力結果です。

array=list(map(str,input().split(' ')))
print(array)

#変数Nにリストの先頭から単語の個数5を代入する
N=int(array[0])

#Nに5が代入されたことを確認する
print(N)

次に、Nに代入済みのリストarrayの先頭array[0]の5を削除します。

del array[0]

コードと実行結果です。

array=list(map(str,input().split(' ')))
print(array)


N=int(array[0])
print(N)

#リストarrayから変数Nに代入した5を削除する
del array[0]

#削除されたことを確認する
print(array)

元のリストから無事に先頭の5だけが削除されたことが確認出来ました。


それでは、残ったリストarrayを最も基本的なループを用いて縦に出力致します。

現在、リストarrayには、

array[0]=paiza
array[1]=813
array[2]=paiza813
array[3]=Hello
array[4]=world!

の5つの単語が入っています。

ループの書式は下記の様になります。

for i in range(N):

現在Nには5が入っています。

ループで出力する時に、iの値はrange(N)で5未満の、i=0,1,2,3,4の5つの値が代入され、ループを5回分回しながら単語の出力をします。

array=list(map(str,input().split(' ')))
#print(array) ←コメントアウト

N=int(array[0])
#print(N) ←コメントアウト

del array[0]
#print(array)  ←コメントアウト

#最も基本的なループ
for i in range(N):
    print(array[i])

確認用に出力した所はコメントアウトして、基本的なループのみを出力します。

無事出力出来ました。

次項からは、リストに適したループの便利な記述を掲載します。
その前に、一旦コメントアウトしたコードを削除してスッキリとしたコードに致します。

array=list(map(str,input().split(' ')))
N=int(array[0])
del array[0]


#最も基本的なループ
for i in range(N):
    print(array[i])

リストを出力する際に、更に便利なループの表記方法について掲載致します。

for リストの要素の文字 in リスト名:

今回の例ですと、

for word in array:

等になります。

リストの要素の所は自分や他の方が見て分かりやすい「word」などにすると、「単語を取り出すんだな」と伝わりやすいです。

array=list(map(str,input().split(' ')))
N=int(array[0])
del array[0]


#arrayをリストに適したループで出力する
for word in array:
    print(word)

基本的なループと同じ出力結果を得られました。


更にコード短くするには、ループをたった1行で表記する内包表記を用います。

[出力結果のprint文 for リストの要素の文字 in リスト名]

今回の例ですと、

[print(word) for word in array]

と表記致します。

array=list(map(str,input().split(' ')))
N=int(array[0])
del array[0]


#リストarrayを内包表記で出力する
[print(word) for word in array]

Pythonは以上です。
次は、GASで解いて行きます。


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

5つの単語の出力用の黄色いセルは、右揃えにしてあります。

paiza側でコピーをして、スプレッドシートのセル緑のセルA2の所で貼り付ける際に、[Ctrl] + [Shif] + [V] で貼り付けると、書式を崩さずに綺麗に貼り付けられます。

緑色のセルA2(2,1)には、単語の個数5個と、N個の単語がを入力されています。

この緑色のセルを配列arrayに取得をして、N=array[0]と代入した後に、先頭の5を配列arrayから削除します。

残ったarrayをC2から始まる黄色いセル5行分に出力します。

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

空の配列array2を宣言して、ループを用いてループの中でpushメソッドを使用して、arrayの要素を二次元配列になるようにarray2に追加します。
その二次元配列になったarray2をスプレッドシートに出力します。

手順をまとめますと、この様になります。

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

2: 緑色のセルA2(2,1)をsplitメソッドを用いて配列arrayに取得する


3: 配列arrayをログ出力する


4: 単語の数5を変数Nに、N=array[0]と代入する


5: shiftメソッドでNに代入した最初の単語の数の5を削除する


6: 空の配列array2を宣言して、一次元配列arrayをループの中でpushを使ってarray2に二次元配列として追加する

7: スプレッドシートに出力する前に、二次元配列になっていることを配列array2をログ出力する


8:スプレッドシートのセルC2(2,3)から始まる黄色いセル5行分に出力する

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

const ss = SpreadsheetApp.getActiveSheet();

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

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

Standard Inputで標準入力の意味です。

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

}


手順2:緑色のセルA2(2,1)をsplitメソッドを用いてarrayに取得する

const array=ss.getRange(2,1).getValue().split(‘ ‘);

ここで、半角スペースで区切られている単語を配列arrayに取得するのにsplit(‘ ‘)を用いいています。

function standardInput3() {
  
  const ss=SpreadsheetApp.getActiveSheet();

  //緑色のセルA2(2,1)をsplitメソッドで半角スペース区切りにして配列arrayに取得する
  const array=ss.getRange(2,1).getValue().split(' ');

}


手順3:配列arrayをログ出力

console.log(array);

配列に取得出来たことを確認します。

function standardInput3() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(2,1).getValue().split(' ');

  //配列arrayに半角スペース区切りで格納出来たことをログ出力で確認する
  console.log(array);

}

出力結果です。

無事にarrayに単語の個数と単語自体を格納出来ました。


手順4:文字列の数NをN=array[0]と代入する

const N=array[0];

出力に使わない単語の文字数の5は、定数Nに代入します。
コードと実行結果です。

function standardInput3() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(2,1).getValue().split(' ');
  console.log(array);

  //単語数5を定数Nに代入する
  const N=array[0];

  //Nに代入出来たことを確認する
  console.log(N);

}

配列の先頭array[0]がNに無事に代入されました。


手順5: shiftメソッドでNに代入した最初の単語の数の5を削除する

array.shift();

出力するのは単語のみですので、配列arrayから先頭のarray[0]の5を削除します。
現在配列arrayは、

array[0]=5
array[1]=paiza
array[2]=813
array[3]=paiza813
array[4]=Hello
array[5]=World!

の0から5までの6つの要素が入っています。
これを下記のコードでarray[0]のみを削除するのに便利なのがshiftメソッドです。

function standardInput3() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(2,1).getValue().split(' ');
  console.log(array);

  const N=array[0];
  console.log(N);

  //shiftメソッドで配列arrayの先頭の単語数の5を削除する
  array.shift();

  //削除後の配列arrayを表示する
  console.log(array);

}

実行後のログ出力です。

配列arrayから先頭の5が削除され、出力する単語のみが残りました。


手順6:空の配列array2を宣言して、一次元配列arrayをループの中でpushを使ってarray2に二次元配列として追加する

for(let i=0 ; i<N ; i++)

定数Nには5が代入されていて、現在配列arrayは、

array[0]=paiza
array[1]=813
array[2]=paiza813
array[3]=Hello
array[4]=World!

の5つの単語が格納されています。
ここで、ループの中の変数iをletで配列の添字として宣言して、i=0,1,2,3,4と5回分ループを回します。

i<Nと不等号のみで等号がついていないのは、一番後ろの要素がarray[4]=World!で、5未満の添字になるためです。

空の配列array2を宣言し、下記の書式で二次元配列として追加します。

array2.push([array[i]]);

pushメソッドを使って、配列array2にarrayの要素を追加します。
[array[i]]と[ ] で括っているのは、二次元配列として追加する為です。

function standardInput3() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(2,1).getValue().split(' ');
  console.log(array);

  const N=array[0];
  console.log(N);

  array.shift();
  console.log(array);

  //空の配列array2を宣言
  const array2=[];

  //ループで二次元配列としてarray2にarrayの要素を追加する
  for(let i=0;i<N;i++){
    array2.push([array[i]]);
  }
}

手順7:スプレッドシートに出力する前に、二次元配列になっていることを配列array2をログ出力する

console.log(array2);

下記のコードで二次元配列になっていることが確認出来ます。

function standardInput3() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(2,1).getValue().split(' ');
  console.log(array);

  const N=array[0];
  console.log(N);

  array.shift();
  console.log(array);

  const array2=[];
  for(let i=0;i<N;i++){
    array2.push([array[i]]);
  }

  //スプレッドシート出力前にarray2が二次元配列になっていることを確認する
  console.log(array2);

}

これで、スプレッドシートに格納出来る形に整いました。


手順8:スプレッドシートのセルC2(2,3)から始まる黄色いセル5行分に出力する

C2が(2,3)で、そこから5行分の単語を出力するので(2,3,N)となります。
1列分も含めた(2,3,N,1)について、1列の場合は列の指定は省略が可能です。

ss.getRange(2,3,N).setValues(array2);

setValuesとsが付いているのは、出力する単語の数が5個と複数形になるからです。
コードと実行後のスプレッドシートです。

function standardInput3() {
  
  const ss=SpreadsheetApp.getActiveSheet();
  const array=ss.getRange(2,1).getValue().split(' ');
  console.log(array);

  const N=array[0];
  console.log(N);

  array.shift();
  console.log(array);

  const array2=[];
  for(let i=0;i<N;i++){
    array2.push([array[i]]);
  }

  console.log(array2);


  //スプレッドシートのC2(2,3)から始まる黄色いセルの範囲にN(=5)行分出力する
  ss.getRange(2,3,N).setValues(array2);

}

GASは以上です。

※ この記事の作成に参考になったサイトです ※
ありがとうございます。

Python mapの使い方
Python delの使い方


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

2024年いたばし花火大会です。

←前の問題へ          ループ1の1へ→

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

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

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

■ 関連記事 ■

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


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

paiza レベルアップ問題集 標準入力その7「STEP: 2 2 行目で与えられる N 個の文字列の入力」をPythonとGASの両方で解いたコードの紹介

この記事を読むことで、Pythonでinputやsplitメソッド等を用いて、半角区切りの単語をリスト(配列)形式で標準入力を使って取得し、ループで出力することが可能になります。

GASではスプレッドシートで値を取得して、二次元配列にして出力しています。

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

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

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

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


2 行目で与えられる N 個の文字列の入力 (paizaランク D 相当)

問題:
1 行目に整数 N が与えられます。
2 行目に、N 個の文字列 s_1, … , s_N が半角スペース区切りで与えられます。
s_1, … , s_N を改行区切りで出力してください。

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


手順として、

1: 1行目の単語(文字列)の数5個を変数Nに標準入力で整数として取得する

2: 2行目の半角スペース区切りの単語を標準入力と単語の区切り位置(半角スペース)分割を使ってリスト(配列)arrayに格納する


3: リストarrayをループで出力する
・基本的なループ
・リスト出力に適したループ
・上記の内包表記

の3ステップで行います。

今回は入出力例1を用います。

入力例1
5
paiza 813 paiza813 hello813 good

出力例1
paiza
813
paiza813
hello813
good

まず、準備として、paiza.ioにこのように入力します。
(入力例1 をコピペしたのみ)

問題集の入力例を貼り付けた画像

まず1行目の文字の数の5を標準入力で取得して変数Nに入力します。

N=int(input())

intの中に標準入力で取得するinputを入れると、数値を対象とした取得が可能になります。

#1行目の文字列の個数Nを標準入力で整数として取得する
N=int(input())

#Nに5が代入されたことを確認する
print(N)

下記の画像よりN=5が無事に取得出来ました。

単語の数が取得出来た出力結果の画像

次に2行目の文字列を半角区切りのリスト(配列)arrayに代入します。
複数のメソッドなどが登場しているので、この例に沿って役割をまとめます。

input … 標準入力で文字や数値を取得する

split … 半角スペースなどの指定の区切り文字で分割して取得する

str … 上記で取得する対象が単語(文字列)である


map … まとめて適用


list … リスト(配列)変換

このコードの実行結果です。
数値の個数5を含めた整数1行分がリストarrayとして出力されました。

#1行目の文字列の個数Nを標準入力で整数として取得する
N=int(input())

#Nに5が代入されたことを確認する
print(N)

#2行目の半角スペース区切りの文字列をリストarrayに格納する
array=list(map(str,input().split((' '))))

#arrayをリストの形に標準入力を用いて取得出来たことを確認
print(array)
配列で単語が取得出来きた画像

無事にリストとして格納されたことが確認出来ました。


では、リストの残ったarrayをループを用いて解答の出力例に沿って縦に出力します。
最も基礎的なループでは、この様な解説とコードになります。

for i in range(N):

ループの中では、iの値が0,1,2,3,4の5つ、1つずつ増えて行きます。
リストの添字は0から始まり、N=5ですのでarray[i]は、

array[0]=paiza
array[1]=813
array[2]=paiza813
array[3]=hello813
array[4]=
good

の5つの値が取得出来ます。

#1行目の文字列の個数Nを標準入力で整数として取得する
N=int(input())

#Nに5が代入されたことを確認する
#print(N) ← コメントアウト

#2行目の半角スペース区切りの文字列をリストarrayに格納する
array=list(map(str,input().split((' '))))

#arrayをリストの形に標準入力を用いて取得出来たことを確認
#print(array) ← コメントアウト

#基本的なループ
for i in range(N):
    print(array[i])

出力結果です。

単語のループを用いた出力結果の画像

次の少しだけ応用編(シンプルになるだけですので、大丈夫です)のループの出力に備えて、コメントアウトした分のコードを削除します。

#1行目の文字列の個数Nを標準入力で整数として取得する
N=int(input())

#2行目の半角スペース区切りの文字列をリストarrayに格納する
array=list(map(str,input().split((' '))))


#基本的なループ
for i in range(N):
    print(array[i])

確認用に出力したコメントアウトの部分を削除したスッキリしたコードになりました。


次に、リストを出力する際に、更に便利なループの表記方法について掲載致します。

for リストの要素の文字 in リスト名:

今回の例ですと、

for word in array:

等になります。

リストの要素の所は自分や他の方が見て分かりやすい「word」などにすると、「単語を取り出すんだな」と伝わりやすいです。

N=int(input())

array=list(map(str,input().split((' '))))


#arrayをリストに適したループで出力する
for word in array:
    print(word)

ループ以外のコメントを消しました。
少しだけシンプルなコードで同じ出力結果が得られました。


更にコード短くするには、ループをたった1行で表記する内包表記を用います。

[出力結果のprint文 for リストの要素の文字 in リスト名]

今回の例ですと、

[print(word) for word in array]

と表記致します。

N=int(input())

array=list(map(str,input().split((' '))))

#リストarrayを内包表記で出力する
[print(word) for word in array]

Pythonは以上です。
次は、GASで解いて行きます。


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

paiza側で入力例1をコピーして、スプレッドシート側ではショートカットキー、[Ctrl] + [Shift] + [V] で貼り付けると、元の書式を保って貼り付けられます。

スプレッドシートの初期状態の数値や文字列(単語5つ)

出力するC列の黄色いセルの部分は、左揃えにしました。

緑色のセルA1に単語(文字列)の個数の5、灰色の所に出力するN個の単語が入力されています。

スプレッドシートのアクセス回数を減らすために、この緑色の単語の個数と灰色の単語を同時に配列arrayで取得し、5個の単語のみをC2から始まる黄色いセルに出力します。

その際、この黄色いセルの所には、二次元配列として取得した整数が格納された配列を出力します。

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

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

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

2: 緑色のセルとA1灰色と灰色のセルA2を同時に配列arrayに取得して二次元配列になっていることをログで確認する


3: 5つの単語(文字列)の数を変数Nとして、N=array[0][0]と代入する


4: Nに代入した配列arrayの先頭array[0][0]をshiftメソッドで削除する

5: 残りの単語の部分を新たな配列array2にarray2=array[0][0].split(‘ ‘)と単語ごとに分割する

6: array2が単語ごとに分割は出来ても一次元配列になってしまったので、スプレッドシート出力前に新たな配列array3にmapを用いて二次元配列に変換する

7: array3をスプレッドシートのC2(3,2)から始まる黄色いセルに出力する


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

const ss = SpreadsheetApp.getActiveSheet();

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

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

Standard Inputで標準入力の意味です。

function standardInput2() {

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

}


手順2:緑色のセルA1と灰色のセルA2をまとめて配列arrayに取得する

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

セルA1は(1,1)で2行分ですので、(1,1,2)になります。
列数の1列分も含めると(1,1,2,1)になりますが、1列の場合は省略できます。

function standardInput2() {

  const ss=SpreadsheetApp.getActiveSheet();

  //緑色のセルA1(1,1)と灰色のセルの2行分を配列arrayに取得する
  const array=ss.getRange(1,1,2).getValues();

  //配列arrayが取得出来たことをログで確認
  console.log(array);

}

また、このコードの実行結果より、この配列が二次元配列として取得出来たことを確認します。

Google Apps Scriptで、文字数と単語の二次元配列の出力結果

この画像より、

array[0][0]=5
array[1][0]=出力する5つの単語

の二次元配列になっております。


手順3:配列先頭である単語の数5個を変数Nに代入して、N=array[0][0]として取得する

const N=array[0][0];

function standardInput2() {

  const ss=SpreadsheetApp.getActiveSheet();

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

  //単語(文字列)の数の5個をN=array[0][0]として取得する
  const N=array[0][0];

  //変数Nに5が代入されたことをログで確認する
  console.log(N);

}

先頭の単語の数5個をNに代入する。


手順4:変数Nに代入した配列arrayの先頭「5」をshiftメソッドで削除する

先頭の要素のみ削除するメソッドのshiftは今回のコードでは

array.shift();

この様に使用します。

function standardInput2() {

  const ss=SpreadsheetApp.getActiveSheet();

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

  const N=array[0][0];
  console.log(N);

  //Nに代入した配列arrayの先頭の要素を削除する
  array.shift();

  //配列の先頭が削除されたことを確認する
  console.log(array);  

}

先頭の単語の個数5が削除出来た結果の画像


手順5:配列array2に残りのarrayの単語の部分をarray2=area[0][0].split(‘ ‘)として取得する

const array2=array[0][0].split(‘ ‘);

現在、配列arrayはスペースで区切られている一つの文字列になっています。
これをsplitメソッドを用いて分割して5つの単語にします。

function standardInput2() {

  const ss=SpreadsheetApp.getActiveSheet();

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

  const N=array[0][0];
  console.log(N);

  array.shift();
  console.log(array); 

  //残りの単語array[0][0]をsplit(' ')を使って分割して配列array2に代入する
  const array2=array[0][0].split(' ');

  //配列array2が分割されたことを確認する
  console.log(array2);

}

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

splitで分割は出来たが、一次元配列になってしまった。

分割は出来ましたが、一次元配列になってしまいました。
次の項目で二次元配列に変換します。


手順6:スプレッドシート出力前にarray3にmapを用いて二次元配列に変換する

const array3=array2.map(item=>[item]);

array2にmapメソッドを使って、[item]として二次元配列に変換しています。

function standardInput2() {

  const ss=SpreadsheetApp.getActiveSheet();

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

  const N=array[0][0];
  console.log(N);

  array.shift();
  console.log(array); 

  
  const array2=array[0][0].split(' ');
  console.log(array2);

  //二次元配列に変換する
  const array3=array2.map(item=>[item]);

  //変換出来たことをログで確認する
  console.log(array3);

}

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

二次元配列に変換出来た結果の画像

無事に二次元配列として出力出来ました。
これでスプレッドシートの出力する準備が整いました。


手順7: 配列array3をスプレッドシートのC2から始まる黄色いセルに出力する

ss.getRange(2,3,N).setValues(array3);

セルC2は(2,3)です。
Nには5が入っているので5行分使って5つの単語を出力します。
列数の1は省略可能です。

単語が5つですので、setValuesとsが付く複数形になっています。

function standardInput2() {

  const ss=SpreadsheetApp.getActiveSheet();

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

  const N=array[0][0];
  console.log(N);

  array.shift();
  console.log(array); 

  
  const array2=array[0][0].split(' ');
  console.log(array2);

  
  const array3=array2.map(item=>[item]);
  console.log(array3);

  //スプレッドシートのC2(2,3)から始まる黄色いセルに出力する
  ss.getRange(2,3,N).setValues(array3);

}

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

最終的な、スプレッドシートの出力結果で、黄色いセルに5つの単語が出力sれた。

※ この記事の作成に参考になったサイトです ※
ありがとうございます。

Python mapの使い方

GASは以上です。


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

通勤経路で撮影した、雨粒のついたピンク色〜むらさき色の紫陽花です。
(スマホ写真のPhotoshop仕上げ)

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

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

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

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

■ 関連記事 ■

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


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