如何創建一個 Apps 腳本函式來僅對給定字串的數字求和。我已經能夠使用谷歌表格中的這個常規公式來做到這一點:
=SUM(SPLIT( LOWER(A1) , "abcdefghijklmnopqrstuvwxyz $ " ))
但我無法理解如何在 Google Apps 腳本中執行此類操作。雖然我知道它的作業原理類似于 Javascript,但 Javascript 中的這個示例不適用于 Google 表格的 Apps Script。
function sumAmounts(str) {
let nums = [];
let sum = 0;
for (let i = 0; i < str.length; i ) {
if (!isNaN(Number(str[i]))) {
nums.push(Number(str[i]));
}
}
// console.log(nums);
for (let i = 0; i < nums.length; i ) {
sum = nums[i];
}
return sum;
}
// Test it
console.log(sumAmounts("foo5bar6cat1"));
uj5u.com熱心網友回復:
字串中的數字總和
function sumOnlyNumbersInAString() {
const s ="A123N789Kyxtu9x6".split("");
let sum = s.reduce((a,c) => {
if(c.match(/\d/)) {//matches [0-9]
a = Number(c);
}
return a;
},0);
Logger.log(sum);
}
Execution log
4:59:47 PM Notice Execution started
4:59:47 PM Info 45.0
4:59:48 PM Notice Execution completed
另一種方法是假設連續數字是多位數字
function sumOnlyNumbersInAString() {
const m ="A123N789Kyxtu9x6".match(/\d /g);
let sum = m.reduce((a,c) => {
a = Number(c);
return a;
},0);
Logger.log(sum);
}
Execution log
5:08:14 PM Notice Execution started
5:08:15 PM Info 927.0
5:08:16 PM Notice Execution completed
在后一種情況下,我們添加 123 789 9 6

注意:確保更改要在您的 Apps 腳本中運行的函式。Debug 按鈕旁邊有一個下拉選單,您可以在其中選擇要運行的函式。
此外,由于您的函式中有一個 return 陳述句,您可以在 Google Sheet 中將sumAmounts(str)其用作
uj5u.com熱心網友回復:
雖然我真的很感謝我收到的所有意見和建議,但它確實引導我朝著正確的方向前進;我能夠通過以下方式解決我的問題。
這為我的案例以及在 Google 表格中使用它的預覽和自動建議提供了解決方案。
/**
* Adds only numbers in a cell.
*
* @param {string} cell The cell of text selected.
* @return The sum of only numbers of a given cell.
* @customfunction
*/
function ADDNUMBERS(cell) {
var regex = /\d ([\.]\d )?/g;
const matches = cell.match(regex);
nums = matches.map(Number);
sum = nums.reduce((a,b) => {
return a b;
});
return sum
}
function main(){
test = "Neighbor Notification Shipping Fees $7.50 Building Permit Final Fees $308.78 CC Fees";
console.log(ADDNUMBERS(test))
}
Execution log
11:27:58 PM Notice Execution started
11:27:59 PM Info 316.28
11:27:59 PM Notice Execution completed
此函式決議我的字串并創建一個僅與浮點數匹配的正則運算式的陣列。稍后陣列中的所有元素都被轉換為浮點數,最后將回傳總和。
獎勵是在公式上方創建 JSDoc 注釋。
再次,我真的很感謝所有的快速輸入。

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/460000.html
上一篇:谷歌表腳本復制主表和重命名
