0

Google 문서의 콘텐츠를 검색하고 HTML 페이지의 div 내에서 표시 할 수 있습니까? 그렇다면, 아래의 축소 된 예제에서 "MAGIC"을 구현하는 올바른 방법은 무엇입니까?html 페이지에서 Google 문서 본문 가져 오기 및 표시

위에서
<html> 
    <head> 
    </head> 
    <body> 
     <div> 
      <MAGIC> 
      Script or link that retrieves and displays the body of a Google Doc. 
      </MAGIC> 
     </div> 
    </body> 
</html> 

, 당신은 HTML은 Google 드라이브 호스팅에 의해 제공됩니다

  1. 을 가정 할 수있다.
  2. Google 문서에 대한 참조는 정적입니다.
  3. 공개 html 페이지에서 문서를 편집 할 필요가 없습니다. 즉, 해당 상황에서 읽기 전용입니다.

저는 Apps Script 설명서를 읽었으며 문서 서비스 및 콘텐츠 서비스의 일부 조합으로 가능할 수있는 것처럼 보입니다. 예를 들어 Document Service에는 getBody() 및 copy() 메소드가 있지만이 호출에서 반환 된 객체가 HTML 컨테이너에 삽입하기위한 html로 렌더링 될 수 있는지 여부는 명확하지 않습니다.

배경 : 저는 작은 비영리 단체 용으로 안전하고 사용하기 쉬운 CMS를 구현하려고합니다. Google 드라이브에 호스트 된 웹 사이트 프레임 워크를 프로토 타입했습니다. 지금까지는 유망 해 보였지만 변경은 html을 편집 할 수 있어야합니다. Google은 워드 프로세서와 같은 환경에서 콘텐츠를 만들 수있는 사람이 많지만 HTML/CSS/JQuery/AppsScript를 처리 할 수있는 자신 만의 커플을 포함합니다.

전체 프레임 워크에 집중하고 다른 사람들이 이벤트 등에 대한 콘텐츠를 업데이트하도록 할 수 있다면 큰 도움이 될 것입니다. 기본적으로 Google Doc을 편집 한 다음 웹 페이지를 수동으로 다시로드하여 결과를 볼 수 있다면 매우 행복 할 것입니다.

CMS에는 여러 가지 방법이 있지만 현재로서는 순수 Google 문서 도구/Google 드라이브 솔루션을 탐색하는 데 관심이 있습니다.

답변

1

할 수 있습니다 여기가

 var id = 'Doc-Very-Long-ID-Here'; 
     var url = 'https://docs.google.com/feeds/'; 
     var doc = UrlFetchApp.fetch(url+'download/documents/Export?exportFormat=html&format=html&id='+id, 
            googleOAuth_('docs',url)).getContentText(); 

    // the variable doc is the HTML content that you can use 

    function googleOAuth_(name,scope) { 
     var oAuthConfig = UrlFetchApp.addOAuthService(name); 
     oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope); 
     oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken"); 
     oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken"); 
     oAuthConfig.setConsumerKey('anonymous'); 
     oAuthConfig.setConsumerSecret('anonymous'); 
     return {oAuthServiceName:name, oAuthUseToken:"always"}; 
    } 

또한 그것이 로맹 Vialard available here하여 라이브러리가 어떻게 작동, URL을 가져올 수를 사용하여 드라이브 API를 호출와 구글 문서의 원시 HTML 콘텐츠를 얻을 DocsListExtended를 호출하고 좋은 확장을 제공합니다.


편집 :당신의 편집 다음은

당신 이 당신의 전체 코드와 함께 아래로하는 웹 애플리케이션의 HTML 콘텐츠를 html service를 사용하여 렌더링하는 바로 그런 예를 사용할 수 없습니다 및 working example :

function doGet() { 

    var id = '1el3DpTp1sukDjzlKXh8plf0Zj-qm0drI7KbytroVrNU'; 
    var url = 'https://docs.google.com/feeds/'; 
    var doc = UrlFetchApp.fetch(url+'download/documents/Export?exportFormat=html&format=html&id='+id, googleOAuth_('docs',url)).getContentText(); 
    return HtmlService.createHtmlOutput(doc); 
} 

// the variable doc is the HTML content that you can use 

function googleOAuth_(name,scope) { 
    var oAuthConfig = UrlFetchApp.addOAuthService(name); 
    oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope); 
    oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken"); 
    oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken"); 
    oAuthConfig.setConsumerKey('anonymous'); 
    oAuthConfig.setConsumerSecret('anonymous'); 
    return {oAuthServiceName:name, oAuthUseToken:"always"}; 
} 
+0

감사합니다. Serge. 그것은 합리적인 것처럼 보이지만 작동시키기에 문제가 있습니다. 위의 앱 스크립트에서 구현 한 솔루션을 사용하여 내 게시물을 편집 한 위치를 확인하십시오. 나는 404를 얻고있다. 당신이 그것을 확인할 수 있도록 doc id를 포함시켰다. 이 문서는 "이것은 CMS 시스템의 테스트입니다."라는 문장이 포함 된 문서 일뿐입니다. –

+0

id 만 포함하도록 고정 id 문자열. 404는 없지만 이제는 "스크립트가 완료되었지만 반환 값은 지원되는 반환 유형이 아닙니다." –

+0

수정 사항을 참조하십시오. –

2

나는 콘텐츠 문서를 게시하고 일을 포함에 정착 한 내 원래 질문에서 "MAGIC"을 구현하기 위해 Google에서 제공 한 e iframe 소스 코드 e.내가 CSS와 iframe을 크기를 제어 할 수 있도록 g

<iframe class="cmsframe" src="https://docs.google.com/document/d/1rhkuAB3IIu5Hq0tEtA4E_Qy_-sJMMnb33WBMlAEqlJU/pub?embedded=true"></iframe> 

는 클래스 태그를 수동으로 추가됩니다.