今回は、Google Apps Scriptで元の関数から別の関数を呼び出す方法や、別の関数で取得した値をreturnで返して元の関数で使う方法をご紹介します。
元の関数から別の関数を呼び出し、returnで値を返して元の関数で使用する
まず、スクリプトファイル内にサンプル1のように、setsheetとgettimeの2つの関数を用意します。
※スクリプトエディタの使い方についてはこちらの記事をご参照ください。
・サンプル1
function setsheet() { var ss = SpreadsheetApp.getActiveSpreadsheet(); //アクティブなスプレッドシートを取得 var nowtime = gettime(); sh.getRange(1,1).setValue(nowtime); } function gettime() { var now = new Date(); //現在日時を取得 return time; } |
今回の例ではスプレッドシートに記載する関数setsheetと、現在時間を取得する関数gettimeに分けて関数を作成しています。
本来2つの関数に分けるほどでは無いといえば無いのですが、できるだけシンプルで分かりやすい例になるよう、今回はこのようにしました。
もっと複雑な処理になり、スクリプトが長くなる場合などは関数を分割した方が一見した時に分かりやすく、管理がしやすい場合もあるかと思われます。
また実行する関数を指定する際は、スクリプトエディタ上部の「関数を選択」より実行したい関数(今回は関数setsheet)を選択し、その左側の三角の形をした再生ボタンを押して実行します。
今回の例では関数gettimeを選択して実行しても、どこにも値を出力していないために一見しただけでは何も起こっていないように見えてしまいます。
前置きが長くなってしまいましたが、それでは先ほどのサンプル1についてご紹介しますと、まず、
var ss = SpreadsheetApp.getActiveSpreadsheet();
でアクティブなスプレッドシートを取得し、
var sh = ss.getActiveSheet();
でアクティブなスプレッドシートのアクティブシートを取得し、
var nowtime = gettime();
で、ここで関数gettimeを呼び出しています。
関数gettimeでは、
var now = new Date();
で現在日時を取得し、
var time = Utilities.formatDate(now, ‘Asia/Tokyo’, ‘yyyy/MM/dd HH:mm:ss’);
で取得した現在日時を指定した表示形式に変換し、
return time
で変数timeに格納した値を関数setsheetに返した上で、変数nowtimeに格納し、
sh.getRange(1,1).setValue(nowtime);
でスプレッドシートに記載しています。
試しに関数gettimeの
return time
をコメントアウトするなどして無効にして実行すると、スプレッドシートには
undefined
と記載され、変数timeに格納した値が関数setsheetへ正常に返されていない事がわかります。
関数実行時に承認を要求された場合にはこちらの記事をご参照ください。
時間取得についてはこちらの記事をご参照ください。
アクティブシートの取得についてはこちらの記事をご参照ください。