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でログ出力 […]