3

對此問題首先表示歉意,但GAS對我來說是一種新的語法。 我想在VBA語法中做一些簡單的事情,但不能在GAS中做。轉置數組時,出現「回調函數不支持此操作」錯誤

我想轉換一個命名的範圍到另一個命名範圍(例如從4行到4列)在不同的工作表上。網上有一些使用.getDataRange()的例子,但我希望使用一個固定的命名範圍,無論數據是否包含在內。

我玩弄的語法如下:

var wksInput = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('New'); 
var wksDB = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Database'); 
var intDBNewRow = wksDB.getLastRow() + 1; 

wksDB.getRange(intDBNewRow, wksDB.getRange('dbContacts').getColumn(), 1,wksDB.getRange('dbContacts').getNumColumns()).setValues(transposeRange(wksInput.getRange('frmVanContacts').getValues())); 

上輸入表單的工作表(wksInput)以4行從固定點到4列的記錄集的最後一行/數據庫表(wksDB)

哪裏transposeRange是:

function transposeRange(a) 
{ 
    return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); }); 
} 

錯誤是:

回調函數不支持此操作。

這裏有什麼問題?

+0

您正在使用的調試工具,對不對?關於尋求幫助調試代碼,請看看[mcve],並看看http://stackoverflow.com/questions/32619480/debugger-fails-with-this-operation-is-not-supported-from -a回調函數 –

+0

是的,看起來我在調試器中不允許有斷點,並且代碼實際上工作正常。 – Shortcake

回答

3

回答

的問題是不與置函數,問題是,谷歌Apps腳本調試器不能用做設計步入回調,所以在調試代碼時,而不是做一個調試的步驟在調用轉置函數之前和之後放置一個斷點,以使調試器跳過該調用。

參考

在谷歌Apps腳本的問題有一個關於這個問題 - >Issue 4662: Debug breakpoint within the function body of an Array.map() call causes a server error具有來自Google員工

https://code.google.com/p/google-apps-script-issues/issues/detail?id=4662#c3

這是目前正在按照預期這樣的評論 - - 我們不支持使用回調函數的調試器 斷點。因此該問題將被標記爲功能請求 。

一個相關的問題沒有解答,但與信息註釋,幫助我找到上述參考

Debugger fails with "This operation is not supported from a callback function."

+0

Ruben真的很棒。謝謝。 –

相關問題