2016-09-30 4 views
0

내가 스크립트 (구문 분석 라이브러리 작업)를 긁어 다음 데이터를 한 옆에있는 열이 발생할 패스 outpout. 그래서 기본적으로 A1:A의 첫 번째 열에서 내 URL을 가져오고 같은 시트의 B1:B 열에 내 스크립트의 응답을 전달하고 싶습니다.스크랩 데이터와는

appendRow 같은 열에 있지만 내 URL 목록에있는 행의 값을 복사하십시오.

답변

1

sheet을 두 번 호출 할 필요가 없으며 하나는 sheet2이고 다른 하나는 sheet5입니다. 그 말이 맞습니까? 아니면 당신이 말씀하신 것처럼 sheet2에서 원하십니까? 그냥 sheet2면 for 루프에서 var sheet을 삭제 한 다음 sheet.getRange(i+1,2).setValue(scraped)을 시도하십시오.이 작업은 수행중인 작업에 적합하지만 배열에 응답을 넣은 다음 해당 배열을 시트에 설정하면 스크립트가 훨씬 빠르게 실행됩니다. 스크립트가 시트와 통신 할 때마다 시간이 걸리기 때문에 시트를 호출하는 시간을 줄이기 위해 노력합니다.

이 작업을 수행하려면

function getData() { 
    var sheet = SpreadsheetApp.openById('my_id').getSheetByName('Sheet2'); 
    var urls = sheet.getDataRange().getValues(); 
    var myNewArray = []; 
    for(var i = 0; i < urls.length; i++) { 

    var url = urls[i] 
    var fromText = '<span class="nb-shares">'; 
    var toText = '</span>'; 
    var content = UrlFetchApp.fetch(url).getContentText(); 
    var scraped = Parser 
        .data(content) 
        .from(fromText) 
        .to(toText) 
        .build(); 
    myNewArray.push([scraped]); 
} 
sheet.getRange(1,2,myNewArray.length,1).setValues(myNewArray); 
} 

이것은 훨씬 빠른 approche 그리고 당신은 구글이 스크립트에이 6 분 제한으로 실행되지 않습니다.

두 가지 접근 방식이 있지만 URL의 측면에 응답을 넣으려고하면 첫 번째 부분에서 보여준 코드를 사용할 수 있습니다.

+0

감사합니다. 두 가지 질문 : 데이터를 전달한 열을 지우는 방법 (다른 URL로 여러 스크립트를 실행하는 경우). 나는 이것을 시도했지만 작동하지 않는다 :'sheet.getRange (1,2, myNewArray.length, 1) .clear();'. 또한 내 URL 배열을 만들기 위해 'A1 : A'가 아닌 다른 열을 어떻게 선택합니까? 예를 들어 내 URL이 c 열에 있다고 가정 해 보겠습니다. –

+1

새 데이터를 입력하기 전에 데이터를 지우고 싶다고 가정합니다.이 경우이 작업을 수행합니다. 'sheet.getRange (1,2, sheet.getLastRow(), 1) .clear()'이것은 B1 : B를 모두 지울 것입니다. – Mullenb

+1

컬럼을 선택하기 위해서, 이것은'var url = urls [i]'에서 행해지므로'var url = urls [i] [0]'에 대해 그렇게해야합니다. 번호. 'var url = urls [i] [2]'C는 세번째 컬럼이고 배열은 인덱스가 0이기 때문입니다. 하지만 getRange에는 0이 없으므로 항상 배열이 getRange 숫자보다 한 번 작을 것임을 기억하십시오. – Mullenb