이 구조의 레코드가있는 log.txt 파일이 있습니다 :
20190509 131952 CON Parametros: [abc....]
20190509 131952 CON Changing Endpoint to https:.....
20190509 131952 INF SQL: select .....
20190509 131952 CON Outbound with header:
<S:Envelope xmlns:S="http://schemas.........</S:Envelope>
XML 응답으로 줄을 추출하고 싶었습니다.
<S:Envelope xmlns:S="http://schemas.........</S:Envelope>
해당 열의 데이터가 포함 된 Google 시트로 가져옵니다.
앱 스크립트 전문가가 아니며 XmlService를 사용하여 결과를 얻는 방법을 알 수 없습니다. 파일을 가져 오는 것이 이상적이라고 생각합니다 .Google 시트로 가져 오는 경우 XML 응답인지 확인하십시오. 누구든지 내가 원하는 것을 얻는 방법에 대한 지침을 줄 수 있다면 고맙습니다. 조사했지만이 유형의 예를 찾을 수 없습니다.
function Importa() {
var PastaAMonitorizar = DriveApp.getFolderById('abc_xyz'); // id da pasta onde txt está quardado
var ss = SpreadsheetApp.openById('abc_xyz'); //id da folha para onde são importados os dados
var files = PastaAMonitorizar.getFiles();
while (files.hasNext()) {
var file = files.next();
var fileName = file.getName();
var targetRng = ss.getSheetByName("INFO"),
fileTextObj = file.getAs('text/plain'),
fileText = fileTextObj.getDataAsString('ISO-8859-1'),
lines = fileText.split('\n'),
...
txt 파일 가져 오기를 알고 있지만 XML 응답 만 추출하는 방법을 알 수 없습니다
-
답변 # 1
-
답변 # 2
@Cooper의 답변을 바탕으로이 솔루션을 찾았습니다.
function extractD() { var file = DriveApp.getFileById('xyz_abc'); var content = file.getBlob().getDataAsString(); var a1 = content.split('\n').filter(function(elem){return (elem.slice(0,1)=='<')}), a11 = []; a1 = a1.map(function(x){ return x.replace(/\u003c\u002f/g,"\u003e")}); a1.forEach(function(y) { a11.push(y.split('\u003e'));}); var a2 = a11.map(function(e){return [e[2].replace('<',''),//A e[6].slice(0,19).replace('T',' '),//B e[30],e[31]]}); Logger.log(a2) SpreadsheetApp.openById("abc_xyz").getSheetByName("1").getRange(1, 1,a2.length, a2[0].length) .setValues(a2); }
아마도 최선의 방법은 아니지만 효과가 있으며 다른 해결책을 찾지 못해 비슷한 것을 찾는 사람들에게 남아 있습니다.
관련 자료
- 특정 셀이 수정 될 때 Google Drive에서 G Sheets로 CSV 파일을 가져 오는 Google Script
- 큰 목록에서 데이터를 찾고 업데이트하는 Google 스프레드 시트 스크립트가 매우 느립니다
- Google Sheets API에 스크립트 편집기에 액세스 할 수있는 방법이 있습니까?
- javascript - Google 스프레드 시트 스크립트는 getUsername ()의 값을 이니셜로 바꿉니다
- google 스프레드 시트 스크립트 - 스크립트 함수에서 사이드 바로 값 가져 오기
- javascript - google 스프레드 시트 + apps script - id를 반복하여 파일 이동
- javascript - 처리하는 데 너무 오래 걸리는 Google 스프레드 시트 (스크립트)에서 중복 항목 제거
- google sheets + apps script - 셀 값을 기준으로 이름으로 시트를 삭제하는 방법
- google 스프레드 시트 스크립트 - 이름으로 차트 참조
- google 스프레드 시트 스크립트 - 현재 셀에서 여러 열/행 명명 된 범위 가져 오기
- javascript - google 스프레드 시트 + apps script + 웹앱 - id와 일치하는 기존 행 업데이트
- javascript - google 스프레드 시트 + apps script + 웹앱 - 기존 행 데이터 가져 오기 및 수정, 행 업데이트
- 행을 추가하는 Google 시트 스크립트
- javascript - Google 시트 스크립트 getrange () 열을 건너 뛸 수 없습니다
- Google Apps 스크립트를 사용하여 모든 Google 설문지를 동일한 시트 gid로 보내기
- xpath - 소매 업체 가격 책정 용 Google 스프레드 시트 가져 오기 XML
- Google Sheets - google 스프레드 시트 - 시트 보호로 스크립트 실행
- Google Sheets Array Script - google 스프레드 시트 배열 스크립트 - 다른 워크 시트에서 셀 참조 붙여 넣기
- google 스프레드 시트 + apps script - 열에 특정 단어가 포함 된 경우에만 데이터 목록 만들기
log.txt에서 원하는 데이터 추출
fileId를 제공해야합니다.
이것은 내 파일 URL입니다 :
https://anyfile-notepad.semaan.ca/app#edit/GoogleDrive/1KTusR1iiQQHB1lXQfYDh2MEjDHEOsdNm
id는 마지막 슬래시 뒤의 문자열입니다.
배열 필터
Array.slice
이것은 간단한 대화 상자에 결과를 표시합니다 :
이 코드 :replace(/[\u00A0-\u9999<>\&]/gim, function(i) {return '&#'+i.charCodeAt(0)+';';})
@Chris Baker에서 제공합니다.