GoogleAppsScriptとはGoogleが提供するサーバーサイド・スクリプトです。JavaScriptに似ていますが、動作するのはブラウザではなく、サーバー側です。GoogleAppsのサービスと連携が可能で、単純なWebアプリケーションも作成できます。
Standalone scriptを作成
GoogleDriveの新規作成から「その他」ー「Google Apps Script」を選択しますが、表示されない場合は「アプリを追加」をクリックします。
googleappsscriptを検索し、「接続」をクリックします。
「Google Apps ScriptがGoogleドライブに接続されました。」と表示されたらそのまま「OK」をクリックします。
GoogleDriveの新規作成から「その他」ー「Google Apps Script」をクリックします。
プロジェクト名を変更
初期値の「無題のプロジェクト」を変更します。
プロジェクト名を変更して「OK」をクリックします。
ファイル名を変更
初期値の「コード.gs」のファイル名も変更できます。
コードを書く
最初にmyFunctionの関数が作成されましたので、ここに処理を追記します。この関数名も自由に変更可能です。
スクリプトを実行する
関数を選択した状態で「実行ボタン」、またはメニューバーの「実行」から実行したい「関数名」をクリックします。
ログを確認する
メニューバーの「表示」ー「ログ」をクリックするか、またはショートカットキーの「Ctrl+Enter」で表示できます。
時間がPDTになっていました。
プロジェクトのプロパティを確認しましたが、タイムゾーンは「GMP+9:00 東京」になっています。保存ボタンをおして、再実行したところ直りました。
スプレッドシートのなかに scriptを作成
Standalone scriptとは別にスプレッドシートからスクリプトエディタを起動し、スプレッドシート内にスクリプトを含めることもできます。
スプレッドシートを新規に作成し、「log」のシートを作成します。
[ツール]-[スクリプトエディタ]をクリックします。
コードを記入し、スクリプトを実行する
logシートを取得し、最終行にログを追記します。
function myFunction() { var msg = 'Hello World!'; var logsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('log'); // 最終行に追加 logsheet.appendRow([new Date(), Session.getActiveUser().getEmail(), 'myFunction()' , msg]); // spread sheetのIDを取得 var id = SpreadsheetApp.getActiveSpreadsheet().getId(); logsheet.appendRow([new Date(), Session.getActiveUser().getEmail(), 'myFunction()' , id]); }
保存後、実行ボタンをクリックします。
初回は承認の確認ダイアログが表示されますので、許可します。
ログを確認する
ログシートをみると、ログが出力されました。
スプレッドシートのIDを指定すれば、Standalone scriptからも、スプレッドシートを操作できます。
Standalone scriptからスプレッドシートを操作する
最初に作成したStandaloneのスクリプトからスプレッドシートのIDを指定して操作します。
function helloStandAlone() { var userEmail = Session.getActiveUser().getEmail(); var id = "1YQrRF7BBwL6NAFGXJh???????????"; var spreadSheet = SpreadsheetApp.openById(id); //log spreadSheet.getSheetByName('log').appendRow( [new Date(), userEmail, 'helloStandAlone()' , 'ここは配列なので', '自由に追加!'] ); }
作成した関数を選択して「実行ボタン」をクリックします。
初回は承認の確認ダイアログが表示されますので、許可します。
スプレッドシートのログシートに出力できました。
また、配列のオブジェクトに追加することもできます。
function helloStandAlone() { var userEmail = Session.getActiveUser().getEmail(); var id = "1wZ6hkt0eGd3gLohB0wHB9-v5YUNwF9aTQ-fxZQItzOA"; var spreadSheet = SpreadsheetApp.openById(id); //log spreadSheet.getSheetByName('log').appendRow( [new Date(), userEmail, 'helloStandAlone()' , 'ここは配列なので', '自由に追加!'] ); // 配列のオブジェクトに追加する方法も可能 var logMsg = new Array(); logMsg.push(new Date()); logMsg.push(userEmail); logMsg.push('helloStandAlone1'); logMsg.push('配列のオブジェクトに'); logMsg.push('追加も可能です!'); spreadSheet.getSheetByName('log').appendRow(logMsg); //中身をクリアして別のログを生成 logMsg = []; // ←こちらで初期化も可能 logMsg.push(new Date()); logMsg.push(userEmail); logMsg.push('helloStandAlone2'); logMsg.push('すきなだけ'); logMsg.push('追加も'); logMsg.push('できますね'); logMsg.push('大量に埋め込むとレスポンスの心配もあります'); logMsg.push('運用時は必要最低限にしましょう'); spreadSheet.getSheetByName('log').appendRow(logMsg); }
GASを作成するときにはログを出力して、デバッグしたほうがはやいです。
Google Apps for Workで独自ドメイン内のみにスクリプトを公開し、ユーザーの操作履歴をログに残すことも可能です。
コメント
[…] Google Apps Scriptでログ出力 […]