web-dev-qa-db-ja.com

Apps Script Debuggerは、オブジェクト内の値(配列やブロックスコープを含む)を見てみません。

私はAppsスクリプトプロジェクトをデバッグしようとしています、そして過去2-3日の間、デバッガはスコープレベルで定義された変数を見ることができません。

たとえば、このコードをデバッグしようとしていました。

_/**
 * Deletes all rows in a sheet, excluding header rows. Just calling sheet.deleteRows() 
 * for a massive range of rows will throw out an error.
 * @private
 * 
 * @param {Sheet} sheet 
 * @param {number = 0} numHeaderRows 
 * @param {number = 500} deletionSize - The number of rows to delete at a time
 */
function deleteAllNonHeaderRows_(sheet, numHeaderRows = 0, deletionSize = 500) {
  const startingNumberOfRows = sheet.getMaxRows();
  for (let numRows = startingNumberOfRows; numRows > numHeaderRows; numRows -= deletionSize) {
    if (numRows < deletionSize) {
      const deletionArgs = [numHeaderRows + 1, sheet.getLastRow() - numHeaderRows]
      sheet.deleteRows(...deletionArgs);
    } else {
      sheet.deleteRows(numRows - deletionSize, deletionSize);
    }
  }
}
_

それは通常迅速なプロセスであったでしょうが、私はsheet.deleteRows()に渡すことを試みていた議論の価値を見ることができなかったので、sheet.getMaxRows()の代わりにsheet.getLastRow()を使ったことをわかりました。デバッガを使用すると、すべてのスコープをリストするメニューが表示されますが、ブロックスコープを拡張しようとしていません。いずれがれの後、私はこの問題がオブジェクトとして実装されているすべてに及ぶので、配列も含まれています。ローカルスコープの機能を拡大するが、あらゆる種類のオブジェクトがそこにある場合は、拡大できません。

Image linked because this is my first post, and I can't embed yet

私はこの問題を引き起こす可能性がわからない。私はエッジを符号化していましたが、Chromeに切り替えませんでした(彼らは両方ともChromiumベースであるため)。私は私のすべての広告ブロッカーとプライバシープロテクターを無効にすることも試みました。見上げる問題他の人々が最近の投稿を引き継ぎなかった。できることはありますか?私はまた「サーバーに接続できなかった」のようなものを言ってエラーメッセージを取得し続けています。ただし、スクリプト自体は、コンテナバインドファイルまたはエディタ自体で実行されているかどうかを正しく実行します。

9
Michael Smith

このバグが存在する間に今のとおりにできることは、[実行] - > [新しいApp Scripts Runtimeを無効にする]をクリックします。

それはデバッガが再び働きますが、それは明らかにV8ランタイムで新しい機能を無効にします。あなたが単純なスクリプトを持っているならば、それはおそらくそれほど影響を与えないでしょう。

2
Alex