在 Google 表格“應用程式腳本”中,我定義了一個自定義函式,它接收格式和一些值,然后將值替換為格式的占位符并回傳它。
function PRINT_DETAILS(format, productName, quantity) {
/* format expects a string with placeholders like: "{productName} {quantity}"
product: expects a string
quantity: expects an integer
*/
}
在產品“表”中有以下列:名稱、數量、價格等。每一個都有自己的命名范圍。
我定義了一個“列印”列,我在其中呼叫這樣的函式:= PRINT_DETAILS("{productName} {quantity}"; Products.Name; Products.Quantity)
問題是我的函式正在接收整個命名范圍,而不僅僅是同一行的單元格值。即即時收到所有產品名稱和所有產品數量...
我以多種方式成功地將命名范圍用作單元格值:在“IF”條件下、連續運算子“&”等中添加它們。甚至在標準函式呼叫中也是如此。
這就是為什么我相信有一種方法可以在自定義函式中做同樣的事情。
我不想使用像 A1 之類的單元格參考來犧牲可讀性。
所以我正在尋找一種方法來約束引數,或者以一種不太老套的方式獲得我想要的值。此外,如果我們可以查看 Google Sheets 源代碼,也許這些標準功能也用 JavaScript 實作,并且他們已經解決了這個問題。
uj5u.com熱心網友回復:
描述
Excel 有一個功能,可以將命名范圍的值傳遞給與公式所在行相對應的自定義公式。不幸的是,Google 表格沒有該功能。相反,您需要獲取公式的行號。
請注意,這假定命名范圍從第 1 行開始,并且公式在任何作業表的同一行上。
感謝 Mike Steelson,我稍微修改了腳本以改進腳本。但不是螢屏截圖。
=PRINT_DETAILS("{productName} {quantity}",Products.Name,Products.Quantity)
螢屏截圖

腳本
function PRINT_DETAILS(format,productName,quantity) {
try {
var row = SpreadsheetApp.getActiveRange().getRow();
return [productName[row-1],quantity[row-1]];
}
catch(err) {
return err.message;
}
}
參考
- https://support.google.com/docs/thread/92023000?authuser=0&hl=en
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/442739.html
標籤:javascript 谷歌应用脚本 谷歌表格 谷歌表格公式 命名范围
上一篇:在appscript中使用HTML時出錯。錯誤:網路狀態從IDLE更改為BUSY
下一篇:使用公式更新表格行
