2017-02-23 6 views
0

を使用してGoogleドキュメントにコンテンツを書く:Googleシートからの読み込みと、私は次のように見えるテーブルを持っているアプリスクリプト

enter image description here

私はGoogleスプレッドシートからのデータを読むのが好き、その後、書き込みたいです

Hi James Madison, Welcome to Vienna! 
Hi James Monroe, Welcome to Toronto! 
Hi John Quincy Adams, Welcome to Paris! 
Hi Andrew Jackson, Welcome to New York! 
Hi Martin Van Buren, Welcome to London! 
Hi William Henry Harrison, Welcome to Tokyo! 
Hi John Tyler, Welcome to Berlin! 

私はスクリプトとテンプレートも作成する必要があることを知っています。

これらの文のそれぞれは、新しい文書にそれぞれ存在する必要があります。したがって、それらはすべて同じフォルダに収集する必要があります。

最後に、すべての文書を電子メールで送信したいと思います。

私はそこにあるさまざまな例、差し込みなどを見てきましたが、何時間もの検索と手抜きをしても、このようなスクリプトの作成方法はまだ分かりませんでした。

多分私よりも経験が豊富な人は、私にそれを行う方法を教えてくれたり、わかりやすく分かりやすい方法でそれを説明するリソースを教えてくれるかもしれません。


は、ここに私の最初の素朴な試みだ:私はあなたのために全体のスクリプトを記述するつもりはない

function extractDataFromSheet() { 

    // Opens spreadsheet by its ID 
    var spreadsheet = SpreadsheetApp.openById("1ow7iuLoqfCSqVhp3ra2uy-22LHUJfQA2UpZgOvIuQ5c"); 

    // Get the name of this SS 
    var name_of_sheet = spreadsheet.getName(); 

    var sheet = spreadsheet.getSheetByName('PussyCow'); // or whatever is the name of the sheet 
    var range = sheet.getRange(1,1); 
    var data = range.getValue(); 
    //Browser.msgBox(name_of_sheet +" "+data); 

    // Opens doc by its ID 
    var doc = DocumentApp.openById("1ZSqN-OOxvDV9YLpuDsXhqSWx4X3djUaVehuIlZbanxo"); 

    var name_of_doc = doc.getName(); 

    var doc_body = doc.getBody(); 

// Use editAsText to obtain a single text element containing 
// all the characters in the document. 
var text = doc_body.editAsText(); 

// Insert text at the beginning of the document. 
text.insertText(0, data); 

// Insert text at the end of the document. 
text.appendText(name_of_sheet); 

// Make the first half of the document blue. 
text.setForegroundColor(0, text.getText().length/2, '#00FFFF'); 


Browser.msgBox(name_of_doc); 
} 

答えて

1

が、私は(あなたが言い換えコードで何ができるかの例を紹介しますうまくいけばそれは意味をなさない)。

まず、すべてのデータを収集することです。これを行う良い方法は、次のようなものです:

var ss = SpreadsheetApp.getActive() 
var dataList = [] 
var iteration = ss.getLastRow() 
while (iteration > 0) { 
    dataList.push(ss.getRange('A' + iteration).getValue() + ',' + ss.getRange('B' + iteration).getValue()) 
    iteration-- 
} 

この時点で、すべてのデータのリストがあります。次に、このすべての情報を別々のGoogleドキュメントにする必要があります。これは、次のようにして行うことができます。

var documentList = [] 
for (i=0;i<dataList.length;i++) { 
    documentList.push(DocumentApp.create('documentName')) 
} 
//this is DEFINITELY not the fastest or most effecient way to do it, but whatever 
var body = undefined 
for (i=0;i<documentList.length;i++) { 
    body = 'Hi ' + dataList[i].split(',')[0] + ', Welcome to' + dataList[i].split(',')[1] + '!' 
    documentList[i].getBody.appendParagraph(body) 
} 

次に、私たちに電子メールを送ります。あなたのテーブルはメールを追跡しないので、これが私ができる最高のものです:

for (i=0;i<documentList.length;i++) { 
    MailApp.sendEmail('emailAdress','subject','whatever you want the body to be') 
} 
+0

私は自分の編集で投稿したコードで何をしましたか? –

+1

あなたが働いているところは間違いなく良いことです。たとえば、あなたは範囲を取得していますが、私は完全に忘れてしまっていますが、間違いなく速くて簡単です。しかし、私はあなたが「私は次に何をするのですか?」という目的のためにそこにある仕事をしているように感じています。あなたが始めたのですが、これが最初の方法です。神の愛のために、私はそれがあなたのやり方をする方法だと言いましたので、ちょうど良いことはありません、ハハ、おそらく良いことをしないでください。とにかく、次のステップは、電子メールのものを追加するか、範囲内の各エントリに対してループさせることです。いいね! –

関連する問題