Google Apps Scriptでログ出力

GoogleAppsScriptとはGoogleが提供するサーバーサイド・スクリプトです。JavaScriptに似ていますが、動作するのはブラウザではなく、サーバー側です。GoogleAppsのサービスと連携が可能で、単純なWebアプリケーションも作成できます。

Develop high-quality, cloud-based solutions with ease.

Standalone scriptを作成

GoogleDriveの新規作成から「その他」ー「Google Apps Script」を選択しますが、表示されない場合は「アプリを追加」をクリックします。

gas1

googleappsscriptを検索し、「接続」をクリックします。

gas2

「Google Apps ScriptがGoogleドライブに接続されました。」と表示されたらそのまま「OK」をクリックします。

gas3

GoogleDriveの新規作成から「その他」ー「Google Apps Script」をクリックします。

gas4

プロジェクト名を変更

初期値の「無題のプロジェクト」を変更します。

gas5

プロジェクト名を変更して「OK」をクリックします。

gas6

ファイル名を変更

初期値の「コード.gs」のファイル名も変更できます。

gas7

コードを書く

最初にmyFunctionの関数が作成されましたので、ここに処理を追記します。この関数名も自由に変更可能です。

gas8

スクリプトを実行する

関数を選択した状態で「実行ボタン」、またはメニューバーの「実行」から実行したい「関数名」をクリックします。

gas9

ログを確認する

メニューバーの「表示」ー「ログ」をクリックするか、またはショートカットキーの「Ctrl+Enter」で表示できます。

gas10

時間がPDTになっていました。

プロジェクトのプロパティを確認しましたが、タイムゾーンは「GMP+9:00 東京」になっています。保存ボタンをおして、再実行したところ直りました。

gas11

gas12

スプレッドシートのなかに scriptを作成

Standalone scriptとは別にスプレッドシートからスクリプトエディタを起動し、スプレッドシート内にスクリプトを含めることもできます。

スプレッドシートを新規に作成し、「log」のシートを作成します。

[ツール]-[スクリプトエディタ]をクリックします。

gas13

コードを記入し、スクリプトを実行する

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]);
}

保存後、実行ボタンをクリックします。

gas14

初回は承認の確認ダイアログが表示されますので、許可します。

ログを確認する

ログシートをみると、ログが出力されました。

gas16

スプレッドシートの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()' , 'ここは配列なので', '自由に追加!']
  );
}

gas17

作成した関数を選択して「実行ボタン」をクリックします。

初回は承認の確認ダイアログが表示されますので、許可します。

スプレッドシートのログシートに出力できました。

gas18

また、配列のオブジェクトに追加することもできます。

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で独自ドメイン内のみにスクリプトを公開し、ユーザーの操作履歴をログに残すことも可能です。

スポンサーリンク
memordmレクタングル(大)
memordmレクタングル(大)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
memordmレクタングル(大)

コメント