2014-05-20 5 views
1

각 행의 두 번째 및 세 번째 열에 이미지가있는 Google 스프레드 시트가 있는데 지금 모든 스프레드 시트 데이터를 콘솔에 기록하려고합니다. getValue() 함수가 이미지의 소스 URL을 반환하지 않기 때문에 각 셀 내에서 이미지에 액세스하는 데 문제가 있습니다. 모든 이미지는 =image("http://imagesource.com",3)을 사용하여 스프레드 시트에 삽입되었습니다.Google 스프레드 시트 셀의 이미지 URL 얻기

function readRows() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var rows = sheet.getDataRange(); 
    var numRows = rows.getNumRows(); 
    var numCols = rows.getNumColumns(); 

    for (var i = 2; i <= numRows - 1; i++) { 
     for (var j = 1; j <= numCols; j++) { 
     // columns 2 and 3 always contain images 
     if (j == 2 || j == 3) { 
      // gets the google spreadsheet url, not the original source url 
      // of the image contained in the cell like I want it to 
      var imgUrl = rows.getCell(i, j).getDataSourceUrl(); 
      Logger.log("[img]" + imgUrl + "[/img]"); 
     } else { 
      var cellData = rows.getCell(i, j).getValue(); 
      Logger.log(cellData); 
     } 
     } 
    } 
    } 

편집 : 저는 여기에 구글이 제공하는 기본 readRows 기능에서 편집, 지금까지 무엇을 가지고 내가 =image("http://imagesource.com",3)처럼 보이는 문자열을 반환 getFormula()을 사용할 수있는 것 같아하지만 여전히 문제로 날 나뭇잎 URL을 포함하도록 문자열을 조작해야합니다. 문자열이 Google 스크립트의 기본 데이터 유형 인 것처럼 보이기 때문에 가능한지 확실하지 않습니다.

답변

2

Range.getValue()은 셀의 계산 된 값을 반환합니다.이 경우에는 이미지가 아니라 URL입니다. 찾은 것처럼 getFormula()을 사용하여 이미지를 만든 수식을 얻을 수 있습니다. 정규식을 사용하여 수식 문자열에서 이미지 URL을 추출 할 수 있습니다.

function getImageUrl(formula) { 
    var regex = /=image\("(.*)"/i; 
    var matches = formula.match(regex); 
    return matches ? matches[1] : null; 
} 

URL이 다른 셀이나 수식에서 계산되는 경우 작동하지 않지만 나열한 간단한 경우에는 작동합니다.

+0

완벽하게 작동합니다. 감사합니다. 이전에 정규 표현식으로 작업 한 적이 없으므로 이후에 유사한 문제를 해결할 수 있도록 사용법을 살펴 보겠습니다. – Shwheelz