【问题标题】:Google Apps Script function return value does not display on spreadsheetGoogle Apps 脚本函数返回值不显示在电子表格上
【发布时间】:2015-11-15 04:37:38
【问题描述】:

多年来,我一直在使用以下自定义 Google Apps 脚本,但由于某种原因,它已部分停止工作。该脚本应该检索一组项目,然后将它们显示在电子表格列中。这是脚本:

function myAccounts() {
    var output = [], arr = JSON.parse(createArr());  
    for(var i=0, iLen=arr.length; i<iLen; i++) {
        output.push([arr[i][0]]);
    }  
output = output.sort();  
return output;
}

通过使用调试器,我可以看到数组似乎已正确创建。这是函数的output

var arr = [

[["5383 - CATEGORY A"],["ASSESSMENT REVIEW BRD","ANNUAL FEE", "ATG ASSESS REVIEW BOARD TORONTO ", "ATG-ASSESSMENT REVIEW BRD TORONTO ",
 "MPAC-PICKERING","CITIZENSHIP & IMM ON-LINEOTTAWA","JONES"]],

[["5230 - CATEGORY B"], ["RED CROSS","G(IRLS)20 SUMMIT","MOVEMBER    *CHARITY","HOSP FOR SICK CHILDREN","URBAN SQUASH TORONTO"]],

[["5351 - CATEGORY C"], ["ELTE","PAYPAL *SMITH","PRAXIS INTERNATIONAL ART"]],

[["5350 - CATEGORY D"], ["PAYPAL *CANADAWIDEP","LA PARETE GALLERY","ACTIVE SURPLUS","PAYPAL *DHL EXPRESS","PRINT THREE #95","STAPLES.CA",
  "FRAMING FACTORY"]],

[["5387 - CATEGORY E"], ["SWEETSERVICES","EVENT RENTAL","GLOBAL FINANCIAL","IVISA SERVICES NORTH SYDNEY","QUEST HENDERSON",
 "SLS HOTEL BEVERLY HILLS","LITTLE TIKES","FAIRY FLOWER","FARICY PTY LTD","VISTAPRINT.AU","MYBAGSCOMPA","ITS MY PARTY","PAYPAL *CAMILLEPRIN"]]

]

由于某种原因,在调用该函数的电子表格的单元格中没有看到这个output。它不会引发错误,只是让单元格完全空白。

知道可能出了什么问题吗?谢谢。

【问题讨论】:

    标签: google-apps-script scripting google-sheets


    【解决方案1】:

    输出需要是一个值、一个数组或数组数组。
    您有一组数组,Sheets 不知道如何处理。
    尝试通过使输出为删除一个级别

    [["CATEGORY A"], ["CATEGORY B"], ["CATEGORY C"]]
    

    这将返回一行三列。
    您可以通过编写output.push(arr[i][0]);,根据我在代码中看到的内容来做到这一点。
    我假设arr[i][0] 已经是一个单元素数组。这就是发生这种情况的原因。

    【讨论】:

    • 谢谢@Robins。您的解决方案是有道理的,但我认为我可能没有提出正确的问题。我可能过度简化了我的实际数据数组的结构。我现在已经编辑了问题以显示我的实际多维数组。正如您从我的数据中看到的那样,我试图返回的结果是我的数组中的第一级,CATEGORY A,CATEGORY B,......等等。我将根据您的建议继续尝试找出它,但是,如果您发现问题,如果您能告诉我,我将不胜感激。谢谢。
    • 同样的逻辑适用。尝试output.push(arr[i][0]);,您的输出将是公式所在列的单独行中的所有xxxx - category y
    • 再次感谢@Robin。你搞定了。将此代码从:output.push([arr[i][0]]); 更改为:output.push(arr[i][0]); 设法解决了问题。我不知道为什么这段代码在使用那组额外的方括号的情况下似乎可以正常工作多年,然后突然停止工作。现在感谢您的建议,我删除了多余的方括号,它又可以正常工作了。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    相关资源
    最近更新 更多