97

私はプログラミングに非常に慣れていません(CodecademyのJSコースのいくつかを受講しました)。ポーカーゲームの結果を含むスプレッドシートが与えられた場合、誰が誰に支払うべきかを決定するための簡単なスクリプトを作成しようとしています。Google Apps Scriptを開いて、開始するために次のように書きました。

function addplayerstoArray(numplayers) {

  var playerArray = [];

  for (i=0; i<numplayers; i++) {
    playerArray.push(i);
  }
}  

addplayerstoArray(7);

console.log(playerArray[3])

アイデアは、プレーヤーの総数を含む配列を作成することです。コードを実行すると、コンソールに「3」が出力されると思いました。しかし、何も起こりませんでした。と言いました

「ReferenceError:「コンソール」が定義されていません。」

A)コードが希望どおりに機能しているかどうかを確認できるように、印刷に関してGoogle Apps Scriptコンソールがどのように機能するかについて理解していないことは何ですか?

B)コードに問題がありますか?

4

9 に答える 9

155

コードがブラウザではなくクラウドで実行されているため、コンソールは使用できません。代わりに、 GASが提供するLoggerクラスを使用してください。

Logger.log(playerArray[3])

次に、IDEの[表示]>[ログ...]で結果を表示します。

GASを使用したロギングに関するドキュメントを次に示します。

編集:2017-07-20 Appsスクリプトは、StackdriverLoggingも提供するようになりました。スクリプトエディタの[表示]-[コンソールログ]でこれらのログを表示します。

于 2012-09-12T00:12:59.180 に答える
18

上記のvinniefのハッキーなソリューションを構築するために、次のようにMsgBoxを使用します。

Browser.msgBox('BorderoToMatriz', Browser.Buttons.OK_CANCEL);

ブレークポイントのように機能し、スクリプトを停止して、必要な文字列をポップアップボックスに出力します。特に、Logger.logで問題が発生しているシートで、これはほとんどの場合適切な回避策を提供します。

于 2015-05-03T14:21:11.027 に答える
13

技術的Logger.log()にはコンソールに何かを出力する正しい方法ですが、いくつかの煩わしさがあります。

  1. 出力は構造化されていない混乱であり、すぐに消化するのが難しい場合があります。
  2. 最初にスクリプトを実行してから、[表示/ログ]をクリックする必要があります。これは2回の追加クリックです(Ctrl + Enterキーボードショートカットを覚えている場合は1回)。
  3. を挿入する必要があります。Logger.log(playerArray)デバッグ後、おそらく削除する必要がLogger.log(playerArray)あるため、さらに1〜2ステップ追加します。
  4. オーバーレイを閉じるには、[OK]をクリックする必要があります(さらにクリックします)。

代わりに、何かをデバッグしたいときはいつでも、ブレークポイントを追加し(行番号をクリック)、[デバッグ]ボタン(バグアイコン)を押します。ブレークポイントは、変数に何かを割り当てる場合はうまく機能しますが、変数を開始して後で変数の内部を覗き見したい場合はうまく機能しません。これは、opが実行しようとしていることと似ています。この場合、「x」(xはスポットをマークします!)を入力してブレーク条件を強制し、実行時エラーをスローします。

ここに画像の説明を入力してください

ログの表示と比較してください。

ここに画像の説明を入力してください

デバッグコンソールにはより多くの情報が含まれており、ログオーバーレイよりもはるかに読みやすくなっています。この方法の小さな利点の1つは、クリーンなコードを維持することが目的である場合に、大量のロギングコマンドでコードを汚染することを心配する必要がないことです。「x」を入力した場合でも、デバッグプロセスの一部として削除することを忘れないでください。そうしないと、コードが実行されません(組み込みのクリーンアップ手段です)。

于 2017-05-17T15:16:53.780 に答える
10

OPの質問に答える

A)コードが希望どおりに機能しているかどうかを確認できるように、印刷に関してGoogle Apps Scriptコンソールがどのように機能するかについて理解していないことは何ですか?

Google Apps Scriptプロジェクトの.gsファイルのコードは、ウェブブラウザではなくサーバーで実行されます。メッセージをログに記録する方法は、クラスロガーを使用することでした。

B)コードに問題がありますか?

エラーメッセージが言ったように、問題はconsole定義されていないことでしたが、最近は同じコードが他のエラーをスローします:

ReferenceError:「playerArray」が定義されていません。(12行目、ファイル「コード」)

これは、playerArrayがローカル変数として定義されているためです。関数の外に行を移動すると、これが解決されます。

var playerArray = [];

function addplayerstoArray(numplayers) {
  for (i=0; i<numplayers; i++) {
    playerArray.push(i);
  }
}  

addplayerstoArray(7);

console.log(playerArray[3])

エラーをスローせずにコードが実行されるようになったので、代わりにブラウザコンソールを確認するために、StackdriverLoggingを確認する必要があります。Google Apps ScriptエディターのUIから、[表示]>[StackdriverLogging ]をクリックします。

補遺

2017年、GoogleはすべてのスクリプトにStackdriver Loggingをリリースし、Class Consoleを追加したため、のようなものを含めるとconsole.log('Hello world!')エラーはスローされませんが、ログはブラウザコンソールではなくGoogle Cloud Platform StackdriverLoggingServiceに記録されます。

GoogleAppsScriptリリースノート2017より

2017年6月23日

StackdriverLoggingは早期アクセスから移動されました。すべてのスクリプトがStackdriverログにアクセスできるようになりました。

ロギング>Stackdriverロギングから

次の例は、コンソールサービスを使用してStackdriverに情報を記録する方法を示しています。

function measuringExecutionTime() {
  // A simple INFO log message, using sprintf() formatting.
  console.info('Timing the %s function (%d arguments)', 'myFunction', 1);

  // Log a JSON object at a DEBUG level. The log is labeled
  // with the message string in the log viewer, and the JSON content
  // is displayed in the expanded log structure under "structPayload".
  var parameters = {
      isValid: true,
      content: 'some string',
      timestamp: new Date()
  };
  console.log({message: 'Function Input', initialData: parameters});

  var label = 'myFunction() time';  // Labels the timing log entry.
  console.time(label);              // Starts the timer.
  try {
    myFunction(parameters);         // Function to time.
  } catch (e) {
    // Logs an ERROR message.
    console.error('myFunction() yielded an error: ' + e);
  }
  console.timeEnd(label);      // Stops the timer, logs execution duration.
}
于 2018-01-18T23:55:58.080 に答える
6

Google Scriptプロジェクトでは、htmlファイル(例:index.html)またはgsファイル(例:code.gs)を作成できます。.gsファイルはサーバー上で実行され、@PeterHerrmanが説明するようにLogger.logを使用できます。ただし、関数が.htmlファイルで作成されている場合は、ユーザーのブラウザーで実行されており、console.logを使用できます。Chromeブラウザコンソールは、Windows/Linuxの場合はCtrlShiftJ、Macの場合はCmdOptJで表示できます。

htmlファイルでLogger.logを使用する場合は、スクリプトレットを使用して、htmlファイルからLogger.log関数を呼び出すことができます。これを行うには、<?を挿入します。Logger.log(something)?>何かをログに記録したいものに置き換えます。構文<?を使用する標準スクリプトレット ...?>、コンテンツをページに明示的に出力せずにコードを実行します。

于 2016-07-14T15:04:30.510 に答える
3

2020年に更新

2020年2月、Googleは組み込みのGoogle Apps Script IDEのメジャーアップグレードを発表し、 console.log()をサポートするようになりました。したがって、両方を使用できるようになりました。

  1. Logger.log()
  2. console.log()

ハッピーコーディング!

于 2020-04-11T01:08:29.990 に答える
2

実行する必要のある機能を必ず選択してください。スクリーンショットを参照してください:
Appsスクリプトロギング

于 2021-01-25T12:31:24.940 に答える
0

新しいAppsスクリプト(2021年からの投稿)でログを表示します。

  1. AppsScriptに移動します
  2. サイドバーのエディターから4番目のタブへの切り替えタブ(私は他の言語を使用しているので、実行またはその呼び出し方法がわかりません)
  3. このタブには、すべてのスクリプト実行の履歴が含まれています。ドロップダウンするだけで、ログが表示されます。
于 2021-11-18T20:57:08.490 に答える
-2

Logger.log(メッセージ)、次にログを確認します。

于 2021-04-06T14:03:03.630 に答える