我有這個谷歌應用程式腳本,它應該充當自定義函式,這意味著您通過=在作業表的單元格中鍵入函式的名稱來呼叫它,然后提供傳遞給函式的輸入值。然后,您可以return在腳本中使用將輸出發送回單元格。
下面的代碼是概念證明。它只需要一個電子郵件地址陣列并回圈遍歷它,將任何不包含給定子字串(在本例中為“yahoo.com”)的地址推回陣列array,然后對其進行return編輯。該腳本按預期作業。
function test_no_sheet()
{
var message_objs = ['[email protected]','[email protected]','[email protected]','[email protected]','[email protected]','[email protected]','[email protected]'];
var array = [];
for (var i = 0; i < message_objs.length; i ) {
if (!message_objs[i].includes("yahoo.com")){array.push(message_objs[i])} else {continue}
console.log(message_objs[i]);
console.log("test" array)
//Do something
}
return array
}
當我嘗試使用包含在單元格中的陣列作為輸入時,問題就出現了。證明腳本的sheet函式適配,簡單改成將input引數傳遞給message_objs。
function test_yes_sheet(input)
{
var message_objs = input
var array = [];
for (var i = 0; i < message_objs.length; i ) {
if (!message_objs[i].includes("yahoo.com")){array.push(message_objs[i])} else {continue}
console.log(message_objs[i]);
console.log("test" array)
//Do something
}
return array
}
我提供了一個公開的表格來演示這個問題(我相信您也可以在extensions下訪問底層的 google apps 腳本)。基本上,當作業表回傳陣列時,它會將這個可怕的垃圾串列發布到目標單元格,顯然它只是簡單地獲取輸入陣列,分隔每個字符,然后將每個字符發布到作業表中的新行。我希望它只是將回圈輸出發布array到目標單元格。有什么想法嗎?
uj5u.com熱心網友回復:
test_yes_sheet(input)在您的using腳本中=test_yes_sheet(A1), 的值作為字串值input給出。message_objs另一方面,你的test_no_sheet(),我認為那message_objs是一個陣列。我認為這是您問題的原因。想用的時候test_yes_sheet(input),下面的修改怎么樣?
從:
var message_objs = input
到:
var message_objs = input.replace(/'/g, "").split(",").map(e => e.trim());
- 通過這種修改,字串值
input被轉換為陣列并放入message_objs.
筆記:
順便說一句,在您的腳本中,我認為以下修改也可以使用
filter. 參考function sample(input) { var message_objs = input.replace(/'/g, "").split(",").map(e => e.trim()); var array = message_objs.filter(e => !e.includes("ampion.net")); return array; }
參考:
- 分裂()
- 地圖()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/441984.html
