<ねこフォーム実践編3>著書「就職氷河期世代&大人の発達障害」の読者アンケート

この記事では、GAS(Google Apps script)を使って、私が2012年に書いた「就職氷河期世代&大人の発達障害」の読者様を対象としたアンケートを作成したコードを公開します。

まず、「就職氷河期世代&大人の発達障害」について、内容紹介のYouTube動画と購入先、アンケートのGoogleフォームを掲載します。

● 本のプロモーションビデオ

● 購入先は自己紹介と著作本から

● 完成した読者アンケート

読者アンケートも宜しくお願いします。

アンケートは上記のフォームから投票出来ます。

GASでのプログラミングでお世話になっているサイトは、いつも隣にITのお仕事さんの

GASでGoogleフォームを一発で作成するツールを作る

です。

まず、下記のような3枚のスプレッドシートを用意します。

・シート「トップ画面」

ここには、ボタンを設置して、このボタンを押すとフォームが作れるようにします。

・シート「フォームのタイトルと説明の情報」

ここには、作成するフォームのタイトルと説明文を入れます。

・シート「項目データ」

ここには、アンケート回答者がラジオボタン、チェックボックス、リストアイテムから選択出来るようスプレッドシートに配置しています。

このデータを二次元配列として取得して、各列ごとに1次元配列に変換して、ラジオボタンなどから選択出来るようにしています。

まず、スプレッドシートのボタンを押すとフォームが作れる関数、「pushButton」を作ります。

シート「フォームのタイトルと説明の情報」を二次元配列arrayとして取得して、array[0][1]をタイトル、array[1][1]をフォームの説明文として取得しています。

function pushButton() {

  //スプレッドシートのトップから現在のスプレッドシートにアクセスする 
  const ss=SpreadsheetApp.getActiveSpreadsheet();
  

  //フォームのタイトルと説明を取得
  const array=ss.getSheetByName('フォームのタイトルと説明の情報').getDataRange().getValues();
  const formTitle=array[0][1];//タイトル
  const formDescription=array[1][1];//概要

  
  //フォームを指定のタイトルと説明の元、作成する
  const form=FormApp.create(formTitle);  
  form.setDescription(formDescription);
 }

この部分ではフォームのプレビュー画面でこの様になります。

また、フォームにニックネームのテキストアイテムを追加します。

form.addTextItem().setTitle('ニックネームまたはイニシャル\n本名以外でお願いします。').setRequired(true);

ニックネームのテキストアイテム入力のプレビュー画面です。

では、いよいよスプレッドシートのシート「項目データ」からデータを取得して、フォームを作成して行きます。

まず、シート「項目データ」を二次元配列として取得するために、下記のコードを書きました。

//項目データからフォームに追加するアイテムの内容を取得
  const dataValues=ss.getSheetByName('項目データ').getDataRange().getValues();
  dataValues.shift()

このコードでは、定数dataValuesにシートを二次元配列として取得したデータを格納して、先頭のタイトル行をshisft()で削除しています。

この二次元配列の各行をフォームのアイテムから選択出来るように一次元配列に変換して、更に空白行を取り除く関数generateArrayを作成しました。

引数に二次元配列のデータとその行を指定して関数generateArrayに送ります。

ここではmapで一次元配列に変換して、filterで空白行を取り除いています。

/**
 * シート「項目データ」全体の値を取得した二次元配列から、指定の列のデータを抜き出し一次元配列を構成する 
 * 
 * @param{Object[][]}シートのデータを二次元配列化とした配列
 * @param{number}配列の列数(0以上のインデックス)
 * @return{Object{}}指定の列(見出しを除く)のデータによる一次元配列
 */
function generateArray(values,column){
  return values.map(record=>record[column]).filter(value=>value);
}

関数呼び出し時には、下記のように指定しました。

A列「性別」は、ラジオボタンで、

generateArray(dataValues,0)

と記述し、引数に二次元配列のデータと列数を指定することで「性別」が選択出来ます。

テキストアイテムで学校名を入力します。

form.addMultipleChoiceItem()    //ラジオボタン
    .setTitle('性別')
    .setChoiceValues(generateArray(dataValues,0))
    .setRequired(true);

B列「ご年齢」の呼び出しは、リストアイテムで、

generateArray(dataValues,1)

です。

  form.addListItem()              //リストアイテム
    .setTitle('ご年齢')
    .setChoiceValues(generateArray(dataValues,1))
    .setRequired(true);

C列「お住まいの都道府県」はリストアイテムで、

generateArray(dataValues,2)

です。その他の項目も選択出来ます。

form.addListItem()              //リストアイテム
    .setTitle('お住まいの都道府県は?')
    .setChoiceValues(generateArray(dataValues,2))
    .setRequired(true);

C列「ご出身の都道府県」はリストアイテムで、

generateArray(dataValues,2)

です。

 form.addListItem()              //リストアイテム
    .setTitle('ご出身の都道府県は?')
    .setChoiceValues(generateArray(dataValues,2))
    .setRequired(true);

これはリストアイテムのタイトルを変えて2回呼び出しています。1回目の呼び出しはお住まい、2回目はご出身です。
ここまでのプレビュー画面です。

D列「あなたについて教えてください」はラジオボタンで、

generateArray(dataValues,3)

です。

これもその他を選択出来るようにしています。

 form.addMultipleChoiceItem()              //ラジオボラン
    .setTitle('あなたについて教えて下さい。')
    .setChoiceValues(generateArray(dataValues,3))
    .showOtherOption(true)//その他の選択肢
    .setRequired(true);

E列「この本を知ったきっかけを教えてください」はチェックボタンで、

generateArray(dataValues,4)

です。

これもその他を選択出来るようにしています。

form.addCheckboxItem()    //チェックボックス
    .setTitle('この本を知ったきっかけを教えて下さい')
    .setChoiceValues(generateArray(dataValues,4))
    .showOtherOption(true)//その他の選択肢
    .setRequired(true);

ここまでのプレビュー画面です。

この本を5段階評価で選択出来るようにスケールアイテムを使っています。

  //スケールアイテム
    form.addScaleItem().setTitle('この本を5段階評価で教えて下さい。\n 1:不満足 〜 5:大変良い').setRequired(true);

最後は自由に記入できるコメント入力用パラグラフテキストアイテムです。

  //長文パラグラフテキストアイテムコメント欄
    form.addParagraphTextItem().setTitle('ご意見ご感想などコメント欄');

マイドライブに保存する場合はここまででも良いのですが、指定のドライブに保存したい場合は、プロパティストアというものを使って、フォルダIDをFOLDER_IDという文字列に保存します。

フォルダIDはこちらになります。

このモザイク部分をXXXが32桁の所に実際のこちらのコードでFOLDER_IDに保存します。

//フォームを保存したいドライブのIDを指定して、1番最初に実行する。
function setScriptProperty(){
  PropertiesService.getScriptProperties().setProperty('FOLDER_ID','XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
}

その実行画面です。

この様に何も起こらないので不安になるかと思います。

そこで、FOLDER_IDに格納出来たのか確認するコードを書きました。

//プロパティストアにフォルダIDが格納されたことを確認する
function getScriptProperty(){
  const folderid=PropertiesService.getScriptProperties().getProperty('FOLDER_ID');
  console.log(folderid);
}

実行結果です。

あとはメインのpushButton関数に下記の4行のコードを追記します。

プロパティストアからFOLDER_IDを取り出して、フォームをそこに格納し、マイドライブに出来てしまったフォームの方は削除します。

 //指定のフォルダに保存する。この4行をコメントアウトするとマイドライブ(ルートディレクトリ)に保存される
  const id=PropertiesService.getScriptProperties().getProperty('FOLDER_ID');//格納するフォルダIDを取り出す
  const formFile=DriveApp.getFileById(form.getId());//作成したフォームをオブジェクトとして取得
  DriveApp.getFolderById(id).addFile(formFile);//指定のフォルダにFileオブジェクトを追加する
  DriveApp.getRootFolder().removeFile(formFile);//マイフォルダからFileオブジェクトを削除する

コメントにもある様、マイドライブ(ルードディレクトリ)に保存したい場合は、一旦コメントアウトをしておいても状況に寄っては宜しいかもしれません。

ここまでの説明で、もう少し詳しくプロパティストアについて知りたいという方は、

<ねこフォーム2>GASで作成したフォームを指定のフォルダに格納する

をご覧ください。

では、これまでのコードをまとめます。

/**
 * シート「項目データ」全体の値を取得した二次元配列から、指定の列のデータを抜き出し一次元配列を構成する 
 * 
 * @param{Object[][]}シートのデータを二次元配列化とした配列
 * @param{number}配列の列数(0以上のインデックス)
 * @return{Object{}}指定の列(見出しを除く)のデータによる一次元配列
 */
function generateArray(values,column){
  return values.map(record=>record[column]).filter(value=>value);
}


function pushButton() {

  //スプレッドシートのトップから現在のスプレッドシートにアクセスする 
  const ss=SpreadsheetApp.getActiveSpreadsheet();
  

  //フォームのタイトルと説明を取得
  const array=ss.getSheetByName('フォームのタイトルと説明の情報').getDataRange().getValues();
  const formTitle=array[0][1];//タイトル
  const formDescription=array[1][1];//概要

  
  //フォームを指定のタイトルと説明の元、作成する
  const form=FormApp.create(formTitle);  
  form.setDescription(formDescription);
 

 //項目データからフォームに追加するアイテムの内容を取得
  const dataValues=ss.getSheetByName('項目データ').getDataRange().getValues();
  dataValues.shift()

 form.addTextItem().setTitle('ニックネームまたはイニシャル\n本名以外でお願いします。').setRequired(true);


  form.addMultipleChoiceItem()    //ラジオボタン
    .setTitle('性別')
    .setChoiceValues(generateArray(dataValues,0))
    .setRequired(true);

  form.addListItem()              //リストアイテム
    .setTitle('ご年齢')
    .setChoiceValues(generateArray(dataValues,1))
    .setRequired(true);

  form.addListItem()              //リストアイテム
    .setTitle('お住まいの都道府県は?')
    .setChoiceValues(generateArray(dataValues,2))
    .setRequired(true);


  form.addListItem()              //リストアイテム
    .setTitle('ご出身の都道府県は?')
    .setChoiceValues(generateArray(dataValues,2))
    .setRequired(true);

  
  form.addMultipleChoiceItem()              //ラジオボラン
    .setTitle('あなたについて教えて下さい。')
    .setChoiceValues(generateArray(dataValues,3))
    .showOtherOption(true)//その他の選択肢
    .setRequired(true);


  form.addCheckboxItem()    //チェックボックス
    .setTitle('この本を知ったきっかけを教えて下さい')
    .setChoiceValues(generateArray(dataValues,4))
    .showOtherOption(true)//その他の選択肢
    .setRequired(true);

    //スケールアイテム
    form.addScaleItem().setTitle('この本を5段階評価で教えて下さい。\n 1:不満足 〜 5:大変良い').setRequired(true);

    //長文パラグラフテキストアイテムコメント欄
    form.addParagraphTextItem().setTitle('ご意見ご感想などコメント欄');
  

  //指定のフォルダに保存する。この4行をコメントアウトするとマイドライブ(ルートディレクトリ)に保存される
  const id=PropertiesService.getScriptProperties().getProperty('FOLDER_ID');//格納するフォルダIDを取り出す
  const formFile=DriveApp.getFileById(form.getId());//作成したフォームをオブジェクトとして取得
  DriveApp.getFolderById(id).addFile(formFile);//指定のフォルダにFileオブジェクトを追加する
  DriveApp.getRootFolder().removeFile(formFile);//マイフォルダからFileオブジェクトを削除する


}


//フォームを保存したいドライブのIDを指定して、1番最初に実行する。
function setScriptProperty(){
  PropertiesService.getScriptProperties().setProperty('FOLDER_ID','XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
}


//プロパティストアにフォルダIDが格納されたことを確認する
function getScriptProperty(){
  const folderid=PropertiesService.getScriptProperties().getProperty('FOLDER_ID');
  console.log(folderid);
}

あとはスプレッドシートのトップ画面のボタンの右上3点リーダーからスクリプトを「pushButton」に割り当てて押すと、あなたが指定したフォルダ、またはマイドライブに保存されます。

お疲れ様でした、ブレイクタイムフォトはこちらになります。

東京都葛飾区、水元公園 2018年コロナ前のゴールデンウィークにサイクリング

■参考文献の紹介■
初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本を通してじっくり学べます。

サイトマップはこちらから

GASサンプル集に戻る
メインメニューに戻る
これからプログラミングを始める方へ
基本情報技術者へ
自己紹介

←<ねこフォーム実践編2>プログラミングのアンケートに戻る

paiza レベルアップ問題集 「STEP: 1 2 つの文字列の半角スペース区切りでの分割」をPythonとGASで解いてみた

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

このコーナーでは、学習コンテンツpaizaラーニングレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。

GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

paizaでの解答はPythonで行いましたが、この記事ではPythonのコードと共に、同じ問題を現在学習中のGASだったらどう解くのか、スプレッドシートでバインドして作ってみました。

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

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

入力される値
なし

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

Hello
paiza

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

■ Pythonでの解き方 ■

手順として、

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

2:配列を確認

3:ループで出力

で、行います。

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

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

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

#配列arrayを出力
print(array)

その出力結果です。

リストarrayに格納されたことが確認できたので、arrayをループで出力します。
そのコードと出力結果です。

#配列arrayをループで出力
for i in range(len(array)):
    print(array[i])

このループの所を内包表記で記述したコードです。

#配列arrayをループで出力
for i in range(len(array)):
    print(array[i])

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

この手順で作成したコードです。

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

#配列arrayを出力
print(array)

#配列arrayをループで出力
for i in range(len(array)):
    print(array[i])

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

求められる出力に対して冗長な箇所はコメントアウトします。
そのコメントアウトをしたコードです。

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

#配列arrayを出力
#print(array)

#配列arrayをループで出力
#for i in range(len(array)):
#    print(array[i])

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

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

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

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

プログラムを実行した出力結果です。

■ GASでの解き方 ■

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

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

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

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

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

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

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

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

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

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

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

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

const ss = SpreadsheetApp.getActiveSheet();

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

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

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

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

console.log(array);

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

let array2=[];

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

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

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

console.log(array2);

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

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

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

GASでの全コードはこちらになります。

function standardInput06() {

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

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

  //分割した文字列が配列arrayに追加出来たことをログ出力で確認する
  console.log(array);

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

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

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

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

}

宜しかったらコピペしてアレンジして見て下さい。
お疲れ様でした、ブレイクタイムフォトはこちらになります。

よみうりランドのジュエルミネーションの鉛筆工場。

■ 参考文献の紹介■

じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

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

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

paiza レベルアップ問題集 「FINAL問題 【行入力】1,000 行の入力」をPythonとGASで解いてみた

この記事を読むことで、ループを使って1000行分もの文字列をPythonの標準入力で文字列を取得・出力する方法、GASでは最初に入力欄を作成して準備を整えた上で、その後に二次元配列として取得、出力する方法が学べます。

このコーナーでは、学習コンテンツpaizaラーニングレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。

GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

paizaでの解答はPythonで行いましたが、この記事ではPythonのコードと共に、同じ問題を現在学習中のGASだったらどう解くのか、スプレッドシートでバインドして作ってみました。

【行入力】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を使って解きます。paiza.ioの使い方はこちらから。

■ Pythonでの解き方 ■

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

(以下略・・・)

手順として、

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

で、行います。

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

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

#問題文から1000行と分かっているのでループを1000回まわし、ループの中で標準入力で取得した文字列を変数tempに格納して出力する
for i in range(1000):
    temp=input()
    print(temp)

■ GASでの解き方 ■

今度は、同じ問題を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から階層を辿ってアクティブシートにアクセスしています。

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

let columnA=[];

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

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

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

console.log(columnA);

ログでは1000行は多過ぎて、全ては表示しきれませんでした。

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

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

そのログ出力と実行結果です。

スプレッドシートはpaiza0からpaiza999までの1000行表示出来ました。

(・・・中略・・・)

ここまでのコードです。

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

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

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

  //スプレッドシートのA列に格納する前にログで確認する
  console.log(columnA);

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

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

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

7:numをC列に出力する

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

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

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

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

実行後のスプレッドシートです。見やすくするように、最初の行を固定していあります。

(・・・中略・・・)

GASでの全コードはこちらになります。

function standardInput05() {

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

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

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

  //スプレッドシートのA列に格納する前にログで確認する
  console.log(columnA);

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

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

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

}

宜しかったらコピペしてアレンジして見て下さい。
お疲れ様でした、ブレイクタイムフォトはこちらになります。

東京都足立区、遊歩道の桜

■ 参考文献の紹介■

じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

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

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

【Python辞書で化学(周期表・元素記号)のお勉強】辞書(連想配列)を使って年号をキーに出来事を値にする

この記事では、もうすぐ入試の時期なので、受験生の方にお役だて頂けたらと思い、入試に良く出る化学の周期表の元素記号の辞書(連想配列)をPythonで作って、ループで取り出してみたり、元素記号を標準入力で入力すると対応する元素の日本語が出力される様にしてプログラミングを使って化学の復習をしました。

サイトマップはこちらから

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」でマグネシウムを入力しています。
マグネシウムの健康効果は、e-ヘルスネットさんをご覧下さい。
最後に、全てのコードを掲載します。

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文を入れて、体裁を整えています。

オミクロンとか流行っていますけれど、体調にお気をつけて、「手洗い・うがい・歯磨き・歯間ブラシで歯の隙間の掃除、もう一回歯磨き」をして、除菌して、徹底して頑張って下さい。

最後までお読み頂きありがとにゃん(=^x^=)

■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

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

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

この記事では、もうすぐ入試の時期なので、受験生の方にお役だて頂けたらと思い、入試に良く出る世界史年号の辞書(連想配列)をPythonで作って、ループで取り出してみたり、年号を標準入力で入力すると対応するアイテム(出来事)が出力される様にしてプログラミングを使って歴史の復習をしました。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

まず、こんな感じの辞書を作ります。

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

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

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

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

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

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

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

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

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

この例では「1789」と入力して、1789年のフランス革命を表示させました。
理由は、何となく出そうだからです。

最後に、全てのコードを掲載します。

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

print()

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

print()

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

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

オミクロンとか流行っていますけれど、体調にお気をつけて、「手洗い・うがい・歯磨き・歯間ブラシで歯の隙間の掃除、もう一回歯磨き」をして、除菌して、徹底して頑張って下さい。

最後までお読み頂きありがとにゃん(=^x^=)

■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

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

paiza レベルアップ問題集 「STEP: 4 10 行の入力」をPythonとGASで解いてみた

この記事を読むことで、ループを使って10行分の文字列をPythonの標準入力で文字列を取得・出力する方法、GASでは二次元配列として取得、出力する方法が学べます。

このコーナーでは、学習コンテンツpaizaラーニングレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。

GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

paizaでの解答はPythonで行いましたが、この記事ではPythonのコードと共に、同じ問題を現在学習中のGASだったらどう解くのか、スプレッドシートでバインドして作ってみました。

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を使って解きます。paiza.ioの使い方はこちらから。

■ Pythonでの解き方 ■

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

手順として、

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

で、行います。

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

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

#問題文から10行と分かっているのでループを10回まわし、ループの中で標準入力で取得した文字列を変数tempに格納して出力する
for i in range(10):
    temp=input()
    print(temp)

■ GASでの解き方 ■

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

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

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

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

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

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

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

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

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

const ss = SpreadsheetApp.getActiveSheet();

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

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

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

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

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

console.log(array);

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

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

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

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

GASでの全コードはこちらになります。

function standardInput04() {

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

  //スプレッドシートの緑のセルの文字列「one,two,・・・,nine,ten」が入っている箇所をarrayに10行1列の二次元配列として取得する
  const array = ss.getRange(2, 1, 10).getValues();

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

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

}

宜しかったらコピペしてアレンジして見て下さい。
お疲れ様でした、ブレイクタイムフォトはこちらになります。

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

■ 参考文献の紹介■

じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

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

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

paiza レベルアップ問題集 「STEP: 3 3 行の入力」をPythonとGASで解いてみた

この記事を読むことで、ループを使って3行分の文字列をPythonの標準入力で文字列を取得・出力する方法、GASでは二次元配列として取得する方法、出力する方法が学べます。

このコーナーでは、学習コンテンツpaizaラーニングレベルアップ問題集をPythonとGASの両方で解いて全コードの解説をしています。
PythonとGASの両方のコードを用いて、全コード及び部分的にも可能な限り詳細に記載いたしました。

GASはスプレッドシートを使っています。
GASはGoogle Apps Scriptと言って、JavaScriptの文法をベースにしているので、JavaScriptの学習中の方にもお役立て出来るかも知れません。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

paizaでの解答はPythonで行いましたが、この記事ではPythonのコードと共に、同じ問題を現在学習中のGASだったらどう解くのか、スプレッドシートでバインドして作ってみました。

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

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

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

入力例1
abc
def
ghi

出力例1
abc
def
ghi

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

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

■ Pythonでの解き方 ■

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

手順として、

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

で、行います。

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

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

#問題文から3行と分かっているのでループを3回まわし、ループの中で標準入力で取得した文字列を変数tempに格納して出力する
for i in range(3):
    temp=input()
    print(temp)

■ GASでの解き方 ■

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

スプレッドシートの緑のセルに文字列「abc」,灰色のセルに「def」,ピンクのセルに「efg」を入力しました。
これを二次元配列として取得して、黄色いセルにそのまままの順番で文字列を出力します。

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

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

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

2:最初の文字列「abc」が入っている緑のセルとその下の灰色のセル「def」が入っているセル、その下のピンクのセルに「ghi」は入っていて、それらを配列arrayに3行1列の二次元配列として取得する

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

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

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

const ss = SpreadsheetApp.getActiveSheet();

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

手順2:最初の文字列「abc」が入っている緑のセルとその下の灰色のセル「def」が入っているセルと「ghi」が入っているピンクのセルを配列arrayに3行1列の二次元配列として取得する

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

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

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

console.log(array);

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

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

スプレッドシートの6行目1列目から配列arrayの長さである3行分を確保してarrayを出力しています。

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

GASでの全コードはこちらになります。

function standardInput03() {

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

  //最初の文字列「abc」が入っている緑のセルとその下の灰色のセル「def」が入っているセルと「ghi」が入っているピンクのセルを配列arrayに3行1列の二次元配列として取得する
  const array = ss.getRange(1, 1, 3).getValues();

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

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

}

宜しかったらコピペしてアレンジして見て下さい。
お疲れ様でした、ブレイクタイムフォトはこちらになります。

お台場 芝浦ふ頭のレインボーブリッジ
フォトムービーはこちらから

■ 参考文献の紹介■

じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

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

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

paiza レベルアップ問題集 「STEP: 2 2 行の入力」をPythonとGASで解いてみた

この記事を読むことで、2行分の文字列を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だったらどう解くのか、スプレッドシートでバインドして作ってみました。

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

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

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

入力例2
heisei31
reiwa1

出力例2
heisei31
reiwa1

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

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

■ 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で解いてみます。
まず、スプレッドシートにこの様に配置しました。

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

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

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

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

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

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

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

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

const ss = SpreadsheetApp.getActiveSheet();

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

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

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

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

console.log(array);

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

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

スプレッドシートの5行目1列目から配列arrayの長さである2行分を確保してarrayを出力しています。

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

GASでの全コードはこちらになります。

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

  //最初の文字列「heisei31」が入っている緑のセルとその下の灰色のセル「reiwa1」が入っているセルを配列arrayに2行1列の二次元配列として取得する
  const array = ss.getRange(1, 1, 2).getValues();

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

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

}

宜しかったらコピペしてアレンジして見て下さい。
お疲れ様でした、ブレイクタイムフォトはこちらになります。

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

日帰り旅行のブログ記事とフォトムービーはこちらから

■ 参考文献の紹介■

じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

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

←前の問題へ          次の問題へ(準備中)→

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

この記事では、もうすぐ入試なので、受験生の方にお役だて頂けたらと思い、入試に良く出る日本史年号の辞書(連想配列)をPythonで作って、ループで取り出してみたり、年号を入力すると出来事が出力される様にしてプログラミングを使って歴史の復習をしました。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

まずは、こんな感じの辞書を作ります。

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

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

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

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

print()

#ループでキーと値を取り出す
for year,event in exam.items():
    print(str(year)+'年には「'+event+'」がありました。')

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

print()

#指定の年を標準入力とリストで出力する
print('年号を半角数字で入れて下さい。>>>',end='')
nen=int(input())
print('その年には【'+exam[nen]+'】がありました。')

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

この例では1338と入力すると、「室町幕府の成立」と出力されました。
私自身は私立理系ということもあって、日本史チンプンカンプンなのですが、急に歴史の勉強をする必要が出てきたので、プログラミングを使って勉強します。

学生時代あれだけ苦手だった歴史も、プログラミングで勉強すると楽しいですね。
では、今までのコードです。

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

print()

#ループでキーと値を取り出す
for year,event in exam.items():
    print(str(year)+'年には「'+event+'」がありました。')

print()

#指定の年を標準入力とリストで出力する
print('年号を半角数字で入れて下さい。>>>',end='')
nen=int(input())
print('その年には【'+exam[nen]+'】がありました。')

オミクロンとか流行っていますけれど、体調にお気をつけて、「手洗い・うがい・歯磨き・歯間ブラシで歯の隙間の掃除、もう一回歯磨き」をして、除菌して、徹底して頑張って下さい。

最後までお読み頂きありがとにゃん(=^x^=)

■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

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

paiza レベルアップ問題集 「STEP: 1 1 行の入力」をPythonとGASで解いてみた

この記事を読むことで、恐らく1番簡単な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だったらどう解くのか、スプレッドシートでバインドして作ってみました。

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

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

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

入力例1
paiza

出力例1
paiza

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

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

■ 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:スプレッドシートに二次元配列として取得する配列str2を宣言する

7:str2が二次元配列になるようにstrを追加する

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

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

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

const ss=SpreadsheetApp.getActiveSheet();

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

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

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

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

console.log(word);

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

let word2=[];

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

word2.push([word]);

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

console.log(word2);

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

str2.push([str]);

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

console.log(str2);

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

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

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

GASでの全コードはこちらになります。

function standardInput01() {

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

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

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

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

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

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

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

}

宜しかったらコピペしてアレンジして見て下さい。
お疲れ様でした、ブレイクタイムフォトはこちらになります。

東京世田谷区の秘境??等々力渓谷で癒されました。

■ 参考文献の紹介■

じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本でじっくり学べます。

サイトマップはこちらから

paizaレベルアップ問題集でPythonとGASを解いて見たに戻る
メインメニューに戻る
Python自作サンプル
GASサンプル
基本情報技術者試験

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

次の問題へ→

モバイルバージョンを終了