2

私の会社は最近 Google Apps に切り替えました。Word と Excel のドキュメントを Google ドキュメントに変換しようとしています。私は Google App Script をまったく使用したことがなく、行き詰まっています。数日間探していましたが、探しているものが見つかりませんでした。

営業担当者にメールで送信する Google フォームがあります。完了すると、Google スプレッドシートが更新され、営業担当者の入力を要約したフォーム レターが営業担当者に送信されます。フォームの一部のフィールドはオプションです。質問が未回答のままだった場合、定型書簡のテキストの一部を含まないテンプレートを作成するにはどうすればよいですか?

たとえば、オプション フィールドの 1 つは顧客の Web サイト アドレス用です。顧客が Web サイトを持っていない場合、Web サイトという言葉をフォームに表示したくありません。

これを行う方法について誰かが「ダミー用」の指示を持っている場合、私は本当に感謝しています.

ありがとう。

これが私がこれまでに持っているものです:

// Business Review Report
// Get template from Google Docs and name it
var docTemplate = "1gRk2irahyW2Sf4pQMTDykXlMQqYgbe1Ba1vkh20KDYo";
var docName = "Business Review";

// When Form Gets submitted
function onFormSubmit (e) {
//Get information from form and set as variables
var variablename = "static entry or form value"
var email_address = e.values[1];
var Business_Name = e.values[2];
var Business_Address = e.values[3];
var Phone_Number = e.values[4]
var Email_address = e.values[5];
var Website = e.values[6];
var Participants = e.values[7];
var Agenda = e.values[8];
var Updates_and_Progress1 = e.values[9]; 
var Updates_and_Progress2 = e.values[10];
var Updates_and_Progress3 = e.values[11]; 
var Current_Issues1 = e.values[12]; 
var Current_Issues2 = e.values[13]; 
var Current_Issues3 = e.values[14]; 
var Next_Steps = e.values[15]; 

// Get document template, copy it as a new temp doc, and save the Doc’s id
var copyId = DocsList.getFileById(docTemplate)
.makeCopy(docName+' for '+ Business_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,in our google doc template
copyBody.replaceText('keyBusinessName', Business_Name);
copyBody.replaceText('keyBusinessAddress', Business_Address);
copyBody.replaceText('keyPhoneNumber', Phone_Number);
copyBody.replaceText('keyEmailaddress', email_address);
copyBody.replaceText('keywebsite', Website);
copyBody.replaceText('keyParticipants', Participants);
copyBody.replaceText('keyAgenda', Agenda);
copyBody.replaceText('keyUpdatesAndProjects1', Updates_and_Progress1);
copyBody.replaceText('keyUpdatesAndProjects2', Updates_and_Progress2);
copyBody.replaceText('keyUpdatesAndProjects3', Updates_and_Progress3);
copyBody.replaceText('keyCurrentIssues1',Current_Issues1);
copyBody.replaceText('keyCurrentIssues2', Current_Issues2);
copyBody.replaceText('keyCurrentIssues3', Current_Issues3);
copyBody.replaceText('keyNextSteps', Next_Steps);

// Save and close the temporary document
copyDoc.saveAndClose();

// Convert temporary document to PDF
var pdf = DocsList.getFileById(copyId).getAs("application/pdf");

// Attach PDF and send the email
var subject = "Business Review";
var body = "Business Review for " + Business_Name + "";
MailApp.sendEmail(email_address, subject, body, {htmlBody: body, attachments: pdf});

// Delete temp file
DocsList.getFileById(copyId).setTrashed(true);

}

これは機能しますが、結果の PDF には CurrentIssues2 のような未入力フィールドのテキストも含まれます。

これを明確に説明しているかどうかわからないので、質問があれば返信してください。より明確になるように努めます。

ありがとう、リサ

4

1 に答える 1

0

フォームの質問には、フォーム レターに含めたくないデフォルト値が含まれているようです。これらのデフォルトを確認して、空白文字列などのより適切なものに置き換えることができます。

...
// If website question was not answered, leave blank
var Website = e.values[6];
if (Website == 'website') Website = '';
...

この代替手段は、Ternary またはConditional Operationを使用し、よりコンパクトです。

...
// If website question was not answered, leave blank
var Website = (e.values[6] == 'website') ? '' : e.values[6];
...
于 2013-05-17T20:14:47.167 に答える