Google Apps Script에서 UrlFetchApp의 데이터를 파싱 할 수 없습니다.

BlueBell

내 현재 Cloud Run URL은 여기에 설명 된 정확한 형식과 일치하는 긴 문자열을 반환합니다 .

Google Apps Script에서 다음 코드를 실행하면 '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);
}

내 예상 출력은 앞서 언급 한 링크에 설명 된대로 기록 된 출력 길이가 18 인 2D 배열입니다.

내 응답의 출력을 다음과 같이 확인했습니다.

  1. 로깅 responseString
  2. 출력 로그를 별도의 var에 복사-> var temp = "copied-output"
  3. parseCsv 행을->로 변경 var data = Utilities.parseCsv(temp, '\t')
  4. 새 코드를 저장하고 실행합니다. 그러면 길이가 18 인 성공적인 2D 배열이 출력됩니다.

그렇다면 현재 코드가 작동하지 않는 이유는 무엇입니까? 아이디어가 부족하기 때문에 무엇이든 시도하는 것이 행복합니다.

편집 : 아래에 자세한 정보가 있습니다.

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리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

내 Gmail에서 Google Apps Script를 실행할 수 없습니다.

분류에서Dev

Google Apps Script-JSON 데이터에서 속성을 쿼리 할 수 없습니다.

분류에서Dev

파싱 된 데이터를 보조 화면에 표시 할 수 없습니다.

분류에서Dev

application / vnd.google-apps.folder 유형의 파일에는 콘텐츠를 업로드 할 수 없습니다.

분류에서Dev

Google Apps Script의 UrlFetchApp 업로드 파일 멀티 파트 / 양식 데이터

분류에서Dev

Google Apps Script의 API에서 JSON 응답을 파싱합니다.

분류에서Dev

Firebase의 JSON에서 파싱 된 데이터를 표시합니다. 선택적 문자열 인쇄를 제거 할 수 없습니다.

분류에서Dev

파싱 된 데이터에서 값을 추출 할 수 없습니다.

분류에서Dev

Gmail 부가 기능의 Google Apps Script 콜백 페이지에 HTML을 게재 할 수 없습니다.

분류에서Dev

Google Apps Script. 데이터의 행 수가 범위의 행 수와 일치하지 않으므로 범위의 값을 설정할 수 없습니다.

분류에서Dev

Google-Apps-Script에서 뭔가를 할 수 있습니까?

분류에서Dev

Google Apps Script는 프로젝트 속성에서 시간대를 변경할 수 없습니다.

분류에서Dev

데이터가 너무 많아 작업을 처리 할 수 없습니다. Google Apps Script

분류에서Dev

Google Apps Script 분할 ( '\ n')은 Goggle 관리 디렉토리의 데이터에서 작동하지 않습니다.

분류에서Dev

Apps Script를 사용하여 Google 드라이브의 이미지를 Google 양식에 추가 할 수 없습니다.

분류에서Dev

Google App Script-API의 데이터로 값을 설정할 수 없습니다.

분류에서Dev

오류 : "파싱 함수의 인수 1에 대해 float 인수 데이터 유형이 잘못되었습니다." SQL에서 try_parse ()를 할 때

분류에서Dev

PHP에서 mysql의 데이터를 업데이트 할 수 없습니다.

분류에서Dev

PHP에서 mysql의 데이터를 업데이트 할 수 없습니다.

분류에서Dev

Google Apps Script에서 시트 ID를 가져올 수 없습니다.

분류에서Dev

Kubernetes (Google Cloud)의 영구 볼륨에 데이터를 보관할 수 없습니다.

분류에서Dev

Eclipse의 Google Glass에서 Glassware를 실행할 수 없습니다.

분류에서Dev

Pandas Python에서 내 데이터를 파이 플롯 할 수 없습니다.

분류에서Dev

Pandas Python에서 내 데이터를 파이 플롯 할 수 없습니다.

분류에서Dev

파이썬에서 시간 데이터를 호출 할 수 없습니다.

분류에서Dev

ibmiotin의 장치에서 데이터를 수신 할 수 없습니다.

분류에서Dev

다른 ViewModel에서 MainViewModel의 데이터를 사용할 수 없습니다.

분류에서Dev

json에서 테이블의 데이터를 검색 할 수 없습니다.

분류에서Dev

CSV 파일에서 HIVE로 데이터를로드 할 수 없습니다.

Related 관련 기사

  1. 1

    내 Gmail에서 Google Apps Script를 실행할 수 없습니다.

  2. 2

    Google Apps Script-JSON 데이터에서 속성을 쿼리 할 수 없습니다.

  3. 3

    파싱 된 데이터를 보조 화면에 표시 할 수 없습니다.

  4. 4

    application / vnd.google-apps.folder 유형의 파일에는 콘텐츠를 업로드 할 수 없습니다.

  5. 5

    Google Apps Script의 UrlFetchApp 업로드 파일 멀티 파트 / 양식 데이터

  6. 6

    Google Apps Script의 API에서 JSON 응답을 파싱합니다.

  7. 7

    Firebase의 JSON에서 파싱 된 데이터를 표시합니다. 선택적 문자열 인쇄를 제거 할 수 없습니다.

  8. 8

    파싱 된 데이터에서 값을 추출 할 수 없습니다.

  9. 9

    Gmail 부가 기능의 Google Apps Script 콜백 페이지에 HTML을 게재 할 수 없습니다.

  10. 10

    Google Apps Script. 데이터의 행 수가 범위의 행 수와 일치하지 않으므로 범위의 값을 설정할 수 없습니다.

  11. 11

    Google-Apps-Script에서 뭔가를 할 수 있습니까?

  12. 12

    Google Apps Script는 프로젝트 속성에서 시간대를 변경할 수 없습니다.

  13. 13

    데이터가 너무 많아 작업을 처리 할 수 없습니다. Google Apps Script

  14. 14

    Google Apps Script 분할 ( '\ n')은 Goggle 관리 디렉토리의 데이터에서 작동하지 않습니다.

  15. 15

    Apps Script를 사용하여 Google 드라이브의 이미지를 Google 양식에 추가 할 수 없습니다.

  16. 16

    Google App Script-API의 데이터로 값을 설정할 수 없습니다.

  17. 17

    오류 : "파싱 함수의 인수 1에 대해 float 인수 데이터 유형이 잘못되었습니다." SQL에서 try_parse ()를 할 때

  18. 18

    PHP에서 mysql의 데이터를 업데이트 할 수 없습니다.

  19. 19

    PHP에서 mysql의 데이터를 업데이트 할 수 없습니다.

  20. 20

    Google Apps Script에서 시트 ID를 가져올 수 없습니다.

  21. 21

    Kubernetes (Google Cloud)의 영구 볼륨에 데이터를 보관할 수 없습니다.

  22. 22

    Eclipse의 Google Glass에서 Glassware를 실행할 수 없습니다.

  23. 23

    Pandas Python에서 내 데이터를 파이 플롯 할 수 없습니다.

  24. 24

    Pandas Python에서 내 데이터를 파이 플롯 할 수 없습니다.

  25. 25

    파이썬에서 시간 데이터를 호출 할 수 없습니다.

  26. 26

    ibmiotin의 장치에서 데이터를 수신 할 수 없습니다.

  27. 27

    다른 ViewModel에서 MainViewModel의 데이터를 사용할 수 없습니다.

  28. 28

    json에서 테이블의 데이터를 검색 할 수 없습니다.

  29. 29

    CSV 파일에서 HIVE로 데이터를로드 할 수 없습니다.

뜨겁다태그

보관