无法在Google Apps脚本中解析来自UrlFetchApp的数据

蓝铃

我当前的Cloud Run URL返回一个长字符串,与此处所述的确切格式匹配

当我在Google Apps脚本中运行以下代码时,我得到的日志输出为“ 1”。发生的情况是,整个字符串被放置在data数组的[0] [0]位置,而不是被实际解析。

function myFunction() {
const token = ScriptApp.getIdentityToken();
const options = {
  headers: {'Authorization': 'Bearer ' + token}
}
var responseString = UrlFetchApp.fetch("https://*myproject*.a.run.app", options).getContentText();
var data = Utilities.parseCsv(responseString, '\t');
Logger.log(data.length);
}

我的预期输出是上述链接中所述的2D数组,记录的输出长度为18。

我已通过以下方式确认了我的回复输出:

  1. 记录 responseString
  2. 将输出日志复制到单独的var-> var temp = "copied-output"
  3. 将parseCsv行更改为-> var data = Utilities.parseCsv(temp, '\t')
  4. 保存并运行新代码。然后输出一个成功的2D数组,长度为18。

那么,为什么我的当前代码不起作用?很高兴尝试任何事情,因为我没有主意。

编辑:下面有更多信息。

Python脚本代码

@app.route("/")
def hello_world():
    # Navigate to webpage and get page source
    driver.get("https://www.asxlistedcompanies.com/")
    soup = BeautifulSoup(driver.page_source, 'html.parser')

    # ##############################################################################
    #                   Used by Google Apps Script to create Arrays
    # This creates a two-dimensional array of the format [[a, b, c], [d, e, f]]
    # var csvString = "a\tb\tc\nd\te\tf";
    # var data = Utilities.parseCsv(csvString, '\t');
    # ##############################################################################
    long_string = ""
    limit = 1
    for row in soup.select('tr'):
        if limit == 20:
            break
        else:
            tds = [td.a.get_text(strip=True) if td.a else td.get_text(strip=True) for td in row.select('td')]
            count = 0
            for column in tds:
                if count == 4:
                    linetext = column + r"\n"
                    long_string = long_string+linetext
                else:
                    text = column + r"\t"
                    long_string = long_string+text
                    count = count+1
            limit = limit+1
        
    return long_string

GAS代码已修改:

function myFunction() {
const token = ScriptApp.getIdentityToken();
const options = {
  headers: {'Authorization': 'Bearer ' + token}
}
var responseString = UrlFetchApp.fetch("https://*myfunction*.a.run.app", options).getContentText();
Logger.log("The responseString: " + responseString);

Logger.log("responseString length: " + responseString.length)

Logger.log("responseString type: " + typeof(responseString))
var data = Utilities.parseCsv(responseString, '\t');
Logger.log(data.length);
}

GAS日志/输出要求:

6:17:11 AM  Notice  Execution started
6:17:22 AM  Info    The responseString: 14D\t1414 Degrees Ltd\tIndustrials\t21,133,400\t0.001\n1ST\t1ST Group Ltd\tHealth Care\t12,738,500\t0.001\n3PL\t3P Learning Ltd\tConsumer Discretionary\t104,613,000\t0.005\n4DS\t4DS Memory Ltd\tInformation Technology\t58,091,300\t0.003\n5GN\t5G Networks Ltd\t\t82,746,600\t0.004\n88E\t88 Energy Ltd\tEnergy\t42,657,800\t0.002\n8CO\t8COMMON Ltd\tInformation Technology\t11,157,900\t0.001\n8IH\t8I Holdings Ltd\tFinancials\t35,814,200\t0.002\n8EC\t8IP Emerging Companies Ltd\t\t3,199,410\t0\n8VI\t8VIC Holdings Ltd\tConsumer Discretionary\t13,073,200\t0.001\n9SP\t9 Spokes International Ltd\tInformation Technology\t21,880,100\t0.001\nACB\tA-Cap Energy Ltd\tEnergy\t7,846,960\t0\nA2B\tA2B Australia Ltd\tIndustrials\t95,140,200\t0.005\nABP\tAbacus Property Group\tReal Estate\t1,679,500,000\t0.082\nABL\tAbilene Oil and Gas Ltd\tEnergy\t397,614\t0\nAEG\tAbsolute Equity Performance Fund Ltd\t\t107,297,000\t0.005\nABT\tAbundant Produce Ltd\tConsumer Staples\t1,355,970\t0\nACS\tAccent Resources NL\tMaterials\t905,001\t0\n
6:17:22 AM  Info    responseString length: 1020
6:17:22 AM  Info    responseString type: string
6:17:22 AM  Info    1.0
6:17:22 AM  Notice  Execution completed
大师

问题:

使用r''原始字符串标志分别使\n\t,文字\n/,t而不是换行或制表符。这解释了为什么您能够将“显示的”日志复制到变量并成功执行。

解:

不要使用r标志。

片段:

    linetext = column + "\n" #no flag
    long_string = long_string+linetext
else:
    text = column + "\t" #no flag

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

.length在Google Apps脚本中无法处理数组

Google Apps脚本:UrlFetchApp发布文件

无法使jQuery警报在Google Apps脚本中工作

方法“ moveActiveSheet”在Google Apps脚本(JavaScript)中无法正常工作

Google Apps脚本HTML表单无法提交

无法登录Google Apps脚本

无法授权Google脚本

Google Apps脚本:autoResizeColumn无法正常工作

如何发送来自Google Apps脚本的POST数据?

Shopify API,来自Google Apps脚本UrlFetchApp的PUT请求的406响应

尝试...在Google Apps脚本中无法按预期方式捕获

使用基本身份验证的Google Apps脚本中的UrlFetchApp.fetch出现意外错误

Google Apps脚本无法识别我的文档中的表格

Google Apps脚本-无法从JSON数据查询属性

无法解析Google Apps脚本中的所有JSON值(后跟逗号)

从Google Apps脚本中的API解析JSON响应

Google Apps脚本无法更改项目属性中的时区

Google Apps Script / URLFetchApp并使用返回的数据

无法在Google Apps脚本中获取Sheet ID

无法使用Google Apps脚本解析SOAP XML响应

Google App脚本-UrlFetchApp.Fetch无法发布

Google Apps脚本:jQuery无法正常工作

Google Apps脚本中的createFile()无法正常运行

无法在Google Apps脚本中使用fetchURL()

为什么我从 Google Apps 脚本中的 UrlFetchApp 得到空响应?

如何使用 UrlFetchApp 编写 Google Apps 脚本以在 FinViz.com 中提取部分表格数据?

无法使用 Google Apps 脚本获取

无法使用 Drive API 在 Google Apps 脚本中获取文件

无法在 Google Apps 脚本中导入 CSV 数据。怎么了?