[英]Insert formula in a Google Sheets programmatically
我需要將公式放入添加到Google表格的每個新行的單元格中。 我在VBA中有此功能,但無法在Script中正確構建它。 我遍歷我的行直到lastrow。 在單元格J中,我希望插入此公式:
var Discount = '=IF(ISBLANK("F"+i,,IF(ISNUMBER(FIND("CM","B"+i)),IF("C"+i>"F"+i,150,0),0))';
我使用這種方法添加行:
var dtaCollect = ["","",StartDate,CustomerName,Monthly,"",Discount,LateFee,TotalPaid,Commission,Note,Referral];
target_sheet.appendRow(dtaCollect);
i++;
} else {
i++;
}
}
但是,公式的寫法與上面完全相同,沒有用迭代值替換i
。 結果我得到#ERROR!
在牢房中。 我已經嘗試了INDIRECT
和concat
。
我怎樣才能解決這個問題?
i
的值未替換在您的字符串中,因為它只是文本。 您需要將其從字符串中分解出來,並更加小心地使用引號,以確保最終得到一個可行的公式。 這將工作:
var Discount = '=IF(ISBLANK(F'+i+',,IF(ISNUMBER(FIND("CM",B'+i+')),IF(C'+i+'>F'+i+',150,0),0))';
由於您使用的是A1Notation,因此只需一個簡單的JavaScript String.replace()
就可以提供更具可讀性的解決方案:
var Discount = '=IF(ISBLANK(F%row%,,IF(ISNUMBER(FIND("CM",B%row%)),IF(C%row%>F%row%,150,0),0))'
.replace(/%row%/g, i.toString());
說明:
replace()
將找到正則表達式或子字符串匹配項,並將其替換為新的子字符串。 g
標志意味着我們將查找所有出現的“ %row%
”,並將它們替換為i
的值。 %
用作書擋,以使可替換的文本清晰可見-只是一種約定,不是要求。 注意:您沒有顯示INDIRECT
使用方式,只是提到您嘗試過。 這是替代方法,可能是首選方法,因為您可以簡單地從現有單元格復制公式,而不必擔心調整引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.