-2

「今週の従業員賞」を変更しましたが、提出時にドキュメントに正確なデータを取得できません。

私の目標は次のとおりです。

1) フォームに必要事項を入力

2) スクリプトでこれらの詳細を収集し、適切なキー ホルダーのドキュメント テンプレートに挿入します。

3) タイトルを変更して PDF でドキュメントの「新しい」コピーを作成する

4) 電子メールは素晴らしいですが、新しいドキュメントを保存する限り、必要ありません。

新しいドキュメントを作成してスクリプトを実行することはできますが、フォームまたはスプレッドシートから正しい (または任意の) データを取得していないようです。フォームに入力した値が表示されるはずの場所に「未定義」が表示され続けます。私のエラーを見るのを手伝ってください。私は文字通り何時間もかけてそれを理解し、コードを書き直しました。前もって感謝します!

私が使用しているドキュメントとスプレッドシート、フォーム、およびスクリプトへのリンクを次に示します。

https://docs.google.com/document/d/1A34uyNyMzp3o8XBzmIGqqfvCH6ocpQWN4HaZ5f4AiDk/edit

https://docs.google.com/spreadsheet/ccc?key=0AkKN7xCpxU54dENoZ0RoSnF1QXhQNnAyX3ZiNmVwRGc#gid=0

これが私の現在のスクリプトです:

function sendDocument() {
 var sheet = SpreadsheetApp.getActiveSheet();  
 var startRow = sheet.getLastRow();  // First row of data to process  
 var numRows = 1;   // Number of rows to process  // Fetch the range of cells  
 var dataRange = sheet.getRange(startRow, 1,2)  // Fetch values for each row in the Range.  
 var data = dataRange.getValues();  
for (i in data) {    
 var row = data[i];    
 var ID = row[1];  // First column    
 var facility_name = row[2];       // Second column  
// Get document template, copy it as a new temp doc, and save the Doc’s id
 var copyId   = DocsList.getFileById("1A34uyNyMzp3o8XBzmIGqqfvCH6ocpQWN4HaZ5f4AiDk")
            .makeCopy("Copy of Mail Merge Doc template"+' for '+facility_name)
            .getId();
// Open the temporary document
 var copyDoc  = DocumentApp.openById(copyId);
// Get the document’s body section
 var copyBody = copyDoc.getActiveSection();
// Replace place holder keys/tags,  
 copyBody.replaceText('keyFacilityName', facility_name);
 copyBody.replaceText('keyID', ID);
 var todaysDate =  Utilities.formatDate(new Date(), "GMT", "MM/dd/yyyy");
 copyBody.replaceText('keyTodaysDate', todaysDate);
// Save and close the temporary document
 copyDoc.saveAndClose();
// Convert temporary document to PDF by using the getAs blob conversion
 var pdf = DocsList.getFileById(copyId).getAs("application/pdf");
// Delete temp file
 DocsList.getFileById(copyId).setTrashed(false);  
}}

また、スクリプトの先頭で次の 2 つのオプションを試して、フォームからデータを「プル」して「新しい」ドキュメントを作成しましたが、成功しませんでした...

// Global variables 
docTemplate = “1A34uyNyMzp3o8XBzmIGqqfvCH6ocpQWN4HaZ5f4AiDk”;
docName = “Copy of Mail Merge Doc template”;

function sendDocument() {
// Full name and email address values come from the spreadsheet form
   var ID = from-spreadsheet-form
   var facility_name = from-spreadsheet-form

...上記のようにスクリプトを続行...

// Global variables 
docTemplate = “1A34uyNyMzp3o8XBzmIGqqfvCH6ocpQWN4HaZ5f4AiDk”;
docName = “Copy of Mail Merge Doc template”;

function onFormSubmit(e) {
// Full name and email address values come from the spreadsheet form
   var ID = e.values[1];
   var facility_name = e.values[2];

...上記のようにスクリプトを続行...

可能であれば助けてください。

4

2 に答える 2

0

あなたのスクリプトはかなり....どう言えばいいですか...近似ですか?

私はそれをテストしておらず、あなたのスプレッドシートを公開するのを忘れていたので見ることができませんでしたが、スクリプトの最初の部分をコメントでいくつかの修正と説明とともに提案できます.

それがあなたがそれを機能させるのに役立つことを願っています。

function sendDocument() {
 var sheet = SpreadsheetApp.getActiveSheet();  
 var startRow = sheet.getLastRow();  // First row of data to process  
 var numRows = 1;   // Number of rows to process  // Fetch the range of cells  
 var dataRange = sheet.getRange(startRow, 1,numRows,sheet.getLastColumn())  // Fetch values for each row in the Range. Needs 4 parameters :start row, start column, number of rows, number of columns 
 var data = dataRange.getValues();  //returns a 2D array with 0 indexed values : data[0] is row nr 1 and data[0][0] is first cell in this first row
for (i in data) {    
 var row = data[i];    
 var ID = row[0];  // First column is index 0   
 var facility_name = row[1];       // Second column is index 1 

ドキュメントの作成が機能しているとあなたが言ったので、これらの変更が機能する可能性があります;-)

于 2013-02-05T19:39:51.557 に答える
0

これがうまく機能しているように見える私の新しいスクリプトです。助けてくれてありがとう。

function sendDocument() {
 var sheet = SpreadsheetApp.getActiveSheet();  
 var startRow = sheet.getLastRow();  // First row of data to process  
 var numRows = 1;   // Number of rows to process  // Fetch the range of cells  
 var dataRange = sheet.getRange(startRow, 1,numRows,sheet.getLastColumn())  // Fetch values for each row in the Range. Needs 4 parameters :start row, start column, number of rows, number of columns 
 var data = dataRange.getValues();  //returns a 2D array with 0 indexed values : data[0] is row nr 1 and data[0][0] is first cell in this first row
for (i in data) {    
 var row = data[i];    
 var ID_ = row[1];  // First column is index 0   
 var facility_name = row[2];       // Second column is index 1  
 var facility_type = row[3]; 
 var Length_ = row[4];
 var Acres_ = row[5]; 
 var Submission_Date = row[6];
 var email_address1 = row[7];
 var email_address2 = row[8];
// Get document template, copy it as a new temp doc, and save the Doc’s id
 var copyId   = DocsList.getFileById("1PsSwL9-w3R51C3RcWCuVwHWKYSxw9btJDVRuGgipDAI")
            .makeCopy("POD BBC Prickly Pear Contraction POD template"+' for '+ID_)
            .getId();
// Open the temporary document
 var copyDoc  = DocumentApp.openById(copyId);
// Get the document’s body section
 var copyBody = copyDoc.getActiveSection();
// Replace place holder keys/tags,  
 copyBody.replaceText('keyID', ID_);
 copyBody.replaceText('keyFacilityName', facility_name);
 copyBody.replaceText('keyFacilityType', facility_type);
 copyBody.replaceText('keyLength', Length_);
 copyBody.replaceText('keyAcres', Acres_);
 copyBody.replaceText('keySubmissionDate', Submission_Date);
// Save and close the temporary document
 copyDoc.saveAndClose();
// Convert temporary document to PDF by using the getAs blob conversion
 var pdf = DocsList.getFileById(copyId).getAs("application/pdf");
  // Attach PDF and send the email
   var subject = "POD BBC Prickly Pear Contraction"+' for '+ID_;
   var body    = "Document for POD BBC Prickly Pear Contraction"+' for '+ID_+" has been created.  Please see attached PDF";
   MailApp.sendEmail(email_address1, subject, body, {htmlBody: body, attachments: pdf});
   MailApp.sendEmail(email_address2, subject, body, {htmlBody: body, attachments: pdf});
// Delete temp file
 DocsList.getFileById(copyId).setTrashed(false);  
}}
于 2013-02-06T03:28:38.923 に答える