皆さんこんにちは!今晩は!!ロト君です。今回はGoogle Apps Script(GAS)について勉強会で学んだ事を記載したいと思います。
1.GASとは?
GASとは?Googleが提供しているサービスの一つで、Google Drive内に.gsを作成し、実行するとJavascriptで作られたプログラムが動き、各Googleのサービスをプログラムより動かす事が出来ます。
2.実際に作ったモノ
今回、実際に作ったモノは、Spreadsheet(SS)をデータベースとし、データを読み込んで、PDFに変換したモノを、メールで送信するシステムを作りました。
コードは下記の様なモノです。少し、プログラムが雑かも知れませんが、初めてでしたので許して下さいww
.gs コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
function myFunction() { // spreadsheet make let sheet = SpreadsheetApp.openById(“SpreadsheetIDxxxxxxxxx”); let sheetname = sheet.getSheetByName("test_sheet"); let row = sheetname.getLastRow(); let col = sheetname.getLastColumn(); let data = sheetname.getRange(1, 1, row, col).getValues(); let templatefile = DriveApp.getFileById(“FileIDxxxxxxxxx”); let outputfolder = DriveApp.getFolderById(“FolderIDxxxxxxxxxx”); let outputfilename; let newsheet; let newid; // mail send let token; let url; let pdf; let to; let subject; let body; for( let i = 1; i < row; i++ ){ // spreadsheet make outputfilename = data[i][0]; newsheet = templatefile.makeCopy(outputfilename, outputfolder); newid = newsheet.getId(); sheet = SpreadsheetApp.openById(newid); sheetname = sheet.getSheetByName("test_02"); sheetname.getRange("A1").setValue(data[i][0]); sheetname.getRange("C3").setValue(data[i][1]); sheetname.getRange("C5").setValue(data[i][2]); SpreadsheetApp.flush(); // mail send token = ScriptApp.getOAuthToken(); url = "https://docs.google.com/spreadsheets/d/" + newid + "/export?gid=" + sheetname.getSheetId() + "&format=pdf&portraitfalse&size=A4&gridlines=false&fitw=true"; pdf = UrlFetchApp.fetch(url, {headers: {'Authorization': 'Bearer ' + token}}).getBlob().setName("ファイル名を入力"+".pdf"); to = data[i][3]; subject = "メールタイトル" + data[i][0] + "御中"; body = "ここに本文が入ります。"; GmailApp.sendEmail(to, subject, body, {attachments: pdf}); } } |
上記の.gsが基本プログラムです。これとは別に指定フォルダ内に必要なSpreadsheetを準備します。
spreadsheetは主にデータベースと雛形の2つが裁定要ります。
データベースには、会社名、氏名、ステータス、メールアドレスの4項目を準備しています。
雛形は適当に、決まったセルに{{会社名}}、{{氏名}},{{ステータス}}などを作っておきます。
3.コード解説
1 2 3 |
function myFunction() { 処理コード } |
function myFunction(){}は、自動的に作成されている関数です。データの処理をここの関数内に書き込んで実行させます。
1 2 3 4 5 |
let sheet = SpreadsheetApp.openById(“SpreadsheetIDxxxxxxxxx”); let sheetname = sheet.getSheetByName("test_sheet"); let row = sheetname.getLastRow(); let col = sheetname.getLastColumn(); let data = sheetname.getRange(1, 1, row, col).getValues(); |
SpreadsheetAppは、スプレッドシートを扱う為の構文です。構文を入力した後に「.」を付けると扱える候補がリスト状に表記されます。
.opneById(“xxxxxxxx”)は、扱うスプレッドシートのIDを入力します。IDは、URL内の後ろの乱数となっています。
getSheetByName(“xxxxxxx”)は、扱うシート名を入力します。今回はtest_sheetを扱う様にしています。
getLastRow()は、文字通り最終行の数です。getLastColumn()も同様で最終列ですね。
getRange(1,1,row,col)は扱うセルを指定しています。
.getValues()で、選択したセルのデータを配列として取得しています。ポイントとしては、Valueでは無くValuesですね!!
スプレッドシートを扱うにはこんな感じでOKです。後は、Gmail側の構文です。
詳しい解説があるサイトが有りますので、こちらで確認してもらえるとありがたいです。
4.まとめ
今回初めて、GASを触ってみましたが、思った以上に使える!!!!!と、思った次第です。
今後の目標としては、下記の様なWebAppを作りたいと思っています。

課題としては、どうやってHTMLのWeb側からアクセス出来るかが重要な所となっていますね。
次回も勉強会があるとの事ですねで、頑張って調べて行きたいと思っています!!
では、今回はここまでで!(°▽°)ミ★