2013-08-09 3 views
0

템플릿으로 문서를 만들고 있는데 올바른 위치에 표를 삽입하는 방법을 알 수 없습니다.배열을 Google 문서에 테이블로 삽입

나는 2 차원 어레이와 같은 메모리에 테이블을 가지며, 템플릿 I는 (정사각형 괄호 포함)이 같은 위치 표시기 가지고

... [표 1] 을 ... [표 2] ... [표 3] 이들의 자리 ...

각각은 1x1 크기의 테이블이다.

나는 올바른 위치에 내 첫 번째 배열을 삽입하는 데 성공했다,하지만 난 다음 자리를 검색 할 때 내 배열은 항상 내 코드는 다음 (나는이 온라인을 발견하고 1

표 다음에 삽입됩니다

function insertTable(targetdoc, stringToReplace, tableValues) { 
    var body = targetdoc.getBody();  
    var searchElement = targetdoc.getActiveSection(); 
    var searchType = DocumentApp.ElementType.TABLE; 
    var searchHeading = DocumentApp.ElementType.TABLE_CELL; 
    var searchResult = null; 

    // Search until the table is found. 
    while (searchResult = searchElement.findElement(searchType, searchResult)) { 
    var par = searchResult.getElement().asTable(); 
    var tabletext = par.getText(); 
    var substr=tabletext.search(stringToReplace); 
    if (substr >0) { 
     var childindex = body.getChildIndex(par); 
     var oTable = body.insertTable(childindex+1, tableValues); 
     return oTable; 
    } 
    } 
} 

및 호출 코드는 다음과 같습니다 :) 약간 적응

var oTable = insertTable(oOutputFile,"["+cFieldID+"]",aTable); 
oOutputfile 새로운 문서가

는 cFieldID는 자리 표시 자 텍스트는 aTable은 2D 배열입니다.

누구나 올바른 작동을 위해 각 어레이를 삽입 할 수 있도록 도와 줄 수 있습니까?

감사

내가 당신에게 유용 할 수있는 매우 비슷한 쓴

답변

0

내가 확실히 찾고자하는 해결책에 대해 고마워하지만, 내가 찾고있는 것에는 과잉이라고 할 수 있습니다.

마지막으로, 나는 거대한 디버깅 세션 후 필요한 무엇에 대한 해결책을 발견하고, 위 내 기능은 지금이되었다 :

function insertTable(targetdoc, stringToReplace, tableValues) { 
    var oDoc = targetdoc.getBody();     // Document 
    var oSR = oDoc.findText(stringToReplace);   // SearchResult 
    var oPara = oSR.getElement().asText().getParent(); // Paragraph 
    var nIndex = oDoc.getChildIndex(oPara);    // Index 
    var oTable = oDoc.insertTable(nIndex, tableValues); // Table 
    return oTable; 
} 

때문에, 예를 들어, 나는 문서 (oDoc)와이있는 경우 다음 자리

[TABLE 1] 

배열

aData: {{"","column 1","column 2"},{"row 1","data 11","data 12"},{"row 2","data 21","data 22"}} 

가변 0,123,

cFieldID = "TABLE 1"; 

내가이 자리 표시 자 텍스트이 코마의 솔루션보다 일반적이고 강력한

----------------------------------- 
|  | column 1 | column 2 | 
----------------------------------- 
| row 1 | data 11 | data 12 | 
----------------------------------- 
| row 2 | data 21 | data 22 | 
----------------------------------- 

대신에 다음을 구해야 내 기능

oTable = insertTable(oDoc, cFieldID, aData); 
oOutputFile.replaceText("\\["+cFieldID+"\\]",""); 

부르지 만, 충분 내가 지금 당장 필요해.

크리스

0

, GAS Template Engine

그것은 어떤 JSON 문자열을 적용하고 JSON의 구조와 일치 문서의 위치에 홀더를 대체 할 참조하십시오. 배열이 발생하면 스크립트는 테이블에서 자리 표시자를 찾고 배열의 각 요소에 대한 테이블 행을 만듭니다.

그래서 JSON 문자열은 다음과 같이 배열이 포함 된 경우 :

var json = { myarr : [ { col1: "a", col2 : "b" }, { col1 : "c", col2 : "d" }] } 

다음 스크립트는 다음과 같습니다 템플릿 문서의 테이블을 찾습니다 :

------------------------------------------------------ 
| $myarr.col1   | $myarr.col2     | 
------------------------------------------------------- 

과에 그 변환을 :

----------------------------------- 
| a   | b     | 
----------------------------------- 
| c   | d     | 
----------------------------------- 

그것뿐만 아니라 행의 서식을 유지합니다.

템플릿 엔진의 개념을 증명할 뿐이지 만 문제를 해결하기에 충분해야합니다.

+0

내일 고맙습니다. 내 문제를 해결하는 데 사용할 수 있는지 알아 봅니다. –

관련 문제