我有以下腳本,它使用 importjson 從 API url 呼叫資料,然后將它們存盤到作業表中。
function test() {
let startcell = "Test!A1"
const parameters = [
{
url: 'https://api.x.immutable.com/v1/orders?buy_token_address=0xccc8cb5229b0ac8069c51fd58367fd1e622afd97&direction=asc&order_by=buy_quantity&page_size=9&sell_metadata={"proto":["1"],"quality":["Meteorite"]}&sell_token_address=0xacb3c6a43d15b907e8433077b6d38ae40936fe2c&status=active',
},
{
url: 'https://api.x.immutable.com/v1/orders?buy_token_address=0xccc8cb5229b0ac8069c51fd58367fd1e622afd97&direction=asc&order_by=buy_quantity&page_size=9&sell_metadata={"proto":["22"],"quality":["Meteorite"]}&sell_token_address=0xacb3c6a43d15b907e8433077b6d38ae40936fe2c&status=active',
},
];
const ss = SpreadsheetApp.getActive();
let data = []
parameters.forEach(spec => {
data.push(ImportJSON(spec.url));
});
data = data.flat()
ss.getRange(startcell)
.offset(0, 0, data.length, data[0].length)
.setValues(data);
}
錯誤: 例外:資料中的列數與范圍內的列數不匹配。資料有 3,但范圍有 24。
說明:當一個 url 中的資料列多于或少于其他列時,會出現此錯誤。例如,上面代碼中的第一個 URL 回傳 24 列,而第二個 URL 回傳 3 列,這會導致錯誤。
我想要實作的目標:無論列數如何,我都希望腳本能夠同時使用這兩個 url。
uj5u.com熱心網友回復:
從您的顯示腳本和錯誤訊息來看,我擔心在您的腳本中,所有列的長度data可能不一樣。如果我的理解是正確的,那么下面的修改呢?
從:
data = data.flat()
ss.getRange(startcell)
.offset(0, 0, data.length, data[0].length)
.setValues(data);
到:
data = data.flat()
// --- I added below script.
const max = Math.max(...data.map(r => r.length));
data = data.map(r => r.length < max ? [...r, ...Array(max - r.length)] : r);
// ---
ss.getRange(startcell)
.offset(0, 0, data.length, data[0].length)
.setValues(data);
- 通過這種修改,所有列的長度
data變得相同。
參考:
- 地圖()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/479327.html
