1

Googleシートのさまざまな値を使用して、Googleドキュメントの本文に一連のプレースホルダを埋め込むスクリプトがあります。私は、テンプレートにマージすることを希望する目的の1つは、EmbeddedChartBuilderオブジェクトです:テキストのプレースホルダをシートのグラフに置き換えます。

var chart = sheet.newChart() 
       .addRange(range) 
       .setChartType(Charts.ChartType.BAR) 
       .setPosition(i, 6, 0, 0) 
       .setOption('legend.position', 'none') 
       .setOption('height', 50) 
       .setOption('width', 700) 
       .setOption('colors', ['black', 'white']) 
       .setOption('hAxis.minValue', 0) 
       .setOption('hAxis.maxValue', 10) 
       .setOption('backgroundColor.fill', 'white') 
       .setOption('hAxis.gridlines.color', 'white') 
       .setOption('hAxis.gridlines.count', 0); 
sheet.insertChart(chart.build()); 

マージコードは次のとおりです。

body.replaceText('{name}', company.name); 
body.replaceText('{score}', company.score); 
body.replaceText('{applyTime}', company.applyTime); 
body.replaceText('{confEmail}', company.confEmail); 
body.replaceText('{mobiFriendly}', company.mobiFriendly); 
body.replaceText('{chart}', chart); 

コースの最後の行、body.replaceText('{chart}', chart);は、単純に置き換えますDocの "EmbeddedChartBuilder"のプレースホルダ。

グラフをプレースホルダに画像などで挿入する方法はありますか?もしそうなら、どうですか?

答えて

1

最初に、chart変数を定義するチェーンの最後に.build()があることは論理的です。結局のところ、チャートビルダーではなく、チャートを挿入したいとします。

もちろん、replaceText関数を使ってグラフを挿入しようとすると、それを "EmbeddedChart"文字列に変換します。代わりに、appendInlineImageまたはinsertInlineImageを適切な要素に使用してください。私は単純なので、前者を使用します:適用される要素の最後にイメージを追加するだけです。

var chart = sheet.newChart()........build(); 
var found = body.findText('{chart}'); 
if (found) { 
    found.getElement().getParent().appendInlineImage(chart); 
    body.replaceText('{chart}', ''); 
} 

ここで、findTextは{chart}を指すRangeElementを取得します。その文字列を含む要素(テキスト)を取得し、その親(おそらく段落ですが、ListItemなど)を取得します。画像が親に追加され、最後に文字列{chart}がreplaceTextで削除されます。

これは、文字列{chart}が要素の末尾にあることを前提としています(おそらく、それ自体の段落にあります)。

+0

ありがとうございます。質問をした後、私は質問に答えようとしていたときと同じように多くの事を実感しました。 –

関連する問題