最近、ではないですが、GASを使って何ヶ月かたつので、そろそろ知識をまとめておこうかなと思い立ったので、体系的にまとめていこうかなと思っています。
というわけで今回は出力から。
最初の出力といえば、やっぱり、もちろん? Hello, World! ですね。
そういえば、いつも私は業務のときにはWindowsを使うんですが、プライベートだとMacを使うのです。しかし、GASだとどちらでも使えるんですね〜。
というわけで、ここからの説明は基本Macを使って説明します。
Hello, Worldを出力する準備
1.まずはスプシ(=スプレッドシート。いわゆるExcelファイルみたいなもんです)をひらいて、スプレッドシートのツールバーの「拡張機能(下の図だとExtensions)」から「App Script(英語でも同じ)」を選択します。そうすると、新しいウィンドウが開きます。
2.画面の左上に「無題のプロジェクト(下だとUntitled Project))」のタイトルと、画面の左真ん中にすでに「コード.gs(下だとCode.gs)」が選択されており、画面には、myFunction()
というのが出てきます。ちなみにこれが関数と呼ばれるやつです。
3.ここまで見て、多分想像はついていると思いますが、myFunction()の中にやりたいことを書きます。では、ここの中で、Hello, Worldを出力させましょう。
出力方法いろいろ
ブラウザで出力
まずはブラウザで出力。まあこういう用途ではあまり使わないですね。
実行して、完了したときとかエラーがあったときなどにメッセージを出したい、という用途に使います。
function myFunction(){
Browser.msgBox('Hello,World');
}
さて、上のコードの説明ですが、
Browserはそのままブラウザというオブジェクト、msgBoxはMessageBoxの略で、この場合はポップアップメッセージを表示させるというメソッド(操作)を指します。ブラウザがポップアップメッセージを表示させる、と覚えればよいでしょう。
コードのすぐ上にあるフロッピーディスクアイコンをクリックすると保存されます。
(フロッピーディスクアイコンといって今の若者はわかるのでしょうか。。。。)
スクリプトを最初に実行するとき(最初の一回だけです)
保存して、隣の「実行(英語だとRun)」を押すと、最初の1回だけ、下のようなポップアップ(下は英語ですが、日本語が出ます!)が出て、承認と許可を求められるので、「権限を確認(下だと、Review permissions)」をクリック。
下のような画面になったら、自分のGoogleアカウントをクリック。(画面の下の方に出ます)
さらに違う画面(下画像。下は英語版)になり、「許可(Allow)」を求められるので、ここでも許可をクリック。
すると、晴れて、スプシに戻り、「Hello,World!」のマドが出てきます!
やったね! ちなみにこれはMac版です。Windows板だと四角い窓だった気がします。
実行ログへ出力
これは開発者用かなと思うのですが、画面下にある「実行ログ(英語だとExecution log)」に出力させることもできます。このままだと意味はないのですが、たとえば、Hello,Worldの部分を変数にして、変数の中身がどうなっているかの確認、などに使われます。上で使ったコードで言うと、Browser.msgBox の部分をLogger.logに入れ替えるだけです。
myFunction(){
Logger.log('Hello,World');
}
さて、コードの説明ですが、LoggerはLogを吐き出すもので、logはログを出力するというもので、Loggerがログを吐き出すとみれば、理解できるでしょう。
スプシへ出力
さて、いよいよスプシへの出力です。これまでのはウォーミングアップで、これからが本番、と言っても良いと思います。スプシへ記入させる、というのはどんな仕事でも必要です。これはその基本中の基本です!
ではちょっとやってみましょう。
まずはコードから。
今開いているスプシの今表示されている画面のA1セルにHello,Worldを記述する、というものです。
これが一番簡単な記述ですね。
function myFunction() {
const sheet = SpreadsheetApp.getActiveSheet()
sheet.getRange('A1').setValue('Hello World!');
}
コードの説明ですが、一気に難しくなってきました。
まず、const ●●(この場合はsheetが)定数を表します。今後上書きする予定のないものに使います。たいてい、スプシやシート名などが定数として候補になりますね。私も定数としてはこれを指定することが多いです。
次に、イコール。この場合は、等しい、ではなく、「代入」を意味しています。
次に、SpreadsheetApp。これはスプシ自体を示すオブジェクトです。
さて、その次はgetActiveSheet()ですが、これは現在表示されてるシートをゲットするというやつです。
今開いているスプシは1つだけ、表示されてるのも1つだけです。
ここまでをまとめると、sheetという定数に、スプシがゲットした現在表示されているシートを代入した、ということになりますね。すなわち、sheetが現在表示されているシートを示すものとなったわけです。
さて、次に、getRange(‘A1’)。これはセルA1をゲットしたんですね。
そして次にsetValue(‘Hello World!’) これはHello,World!を値としてセットしたんですね。
ここまでをまとめると、sheetがセルA1をゲットして、それにHello,Worldをセットしたということになります。
というわけで実行すると。。。
出てきました! Hello,World!
ただですね、今は開いているスプシが1つだけ、しかもシートも1つだけなので、この記述で大丈夫なのですが、スプシが2つ以上、シートも2つ以上だと、ちょっと工夫が必要になります。
まず、対象のスプシを表すIDをURLから取得します。
今開いているスプシのURLは下記になるのですが、〜の部分がIDになります。
https://docs.google.com/spreadsheets/d/〜
これをコピペしておきましょう。
次に、対象となるシート名もコピペします。(今回のシート名は「テスト」とします。さっきのシート名を「テスト」にしておいてください)
次に下記のように記述して、実行します。
function myFunction() {
const spreadsheet_id = ""; // ""の中にIDを入力します
const GasSheet = SpreadsheetApp.openById(spreadsheet_id);
const sht_test = GasSheet.getSheetByName("テスト");
sht_test.getRange('A2').setValue('Hello World!');
}
コードの説明ですが、
さっきもやりました、定数がいくつかできていますね。
2行目から4行目までは、スプシのIdと、GasSheet(スプシ)、sht_test(テストというシート)を定数にしている、という処理です。
openByIdは、スプシのIDによってそのスプシを開くというやつです。すでに開かれている場合もありますが。。。どちらにせよ、スプシの取得ができるのでここでGasSheetに代入されています。
getSheetByName(“テスト”)は、●●というシート名のシートをゲットするというやつですね。ここでゲットしたシートを定数に代入しています。
A2セルに出てきましたね!
ということで、特定のスプシの特定のシートに入力させることも可能になりました。
次回はもっといろいろやっていきますね!