0

送信された Google フォームを使用して会議の議題を作成するスクリプトを作成しようとしています。「今週の従業員賞」というスクリプトをスターターとして使用しましたが、コーディングの経験がまったくないため、困惑しました。

Google フォームで要求しているデータ (つまり、Google スプレッドシートの列のヘッダー) と一致する主要なプレースホルダーを使用して、googde doc 議題テンプレートを作成しました。目標は、誰かが会議の議題項目を説明するフォームを送信すると、このスクリプトがそのデータを取得し、Google ドキュメントの議題テンプレートを使用して会議の議題を作成することです。

編集したスクリプトは次のとおりです。

// Global variables 
    var docTemplate = "1-4ELCpEGvrtnprnBYoLapwASK6TYmt3YpY0BkBKICrM";  
    var docName     = "Agenda";

function onFormSubmit(e) { // add an onsubmit trigger
// Meeting name and date values come from the spreadsheet form
   var meeting_name     = e.values[1];
   var date             = e.values[2];
// Get document template, copy it as a new temp doc, and save the Doc’s id
   var copyId = DocsList.getFileById(docTemplate)
            .makeCopy(docName+' for '+Meeting_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,  
   copyBody.replaceText('keyMeeting_Name', Meeting_Name); 
   copyBody.replaceText('keyDate', Date);
   var Agenda_Item_1 = e.values[3]
   var Item_1_Time   = e.values[4] 
   var Agenda_Item_2 = e.values[5] 
   var Item_2_Time   = e.values[6] 
   var Agenda_Item_3 = e.values[7] 
   var Item_3_Time   = e.values[8] 
   copyBody.replaceText('keyAgenda_Item_1', Agenda_Item_1);
   copyBody.replaceText('keyItem_1_Time', Item_1_Time);
   copyBody.replaceText('keyAgenda_Item_2', Agenda_Item_2);
   copyBody.replaceText('keyItem_2_Time', Item_2_Time);
   copyBody.replaceText('keyAgenda_Item_3', Agenda_Item_3);
   copyBody.replaceText('keyItem_3_Time', Item_3_Time);
// Save and close the temporary document
   copyDoc.saveAndClose();
}

実行すると、TypeError: Cannot read property "values" from undefined (line 7). 後続のすべての行でエラーが発生すると想定していますe.values

4

1 に答える 1

2

この関数を手動で実行すると、e は未定義になります。誰かがフォームを送信したときに onFormSubmit() を実行するトリガーをインストールする必要があります。その手順は、「コンテナ固有のインストール可能なトリガーの使用」という見出しの下にありますトリガーがインストールされていると、誰かがフォームを送信するとスクリプトが実行され、「フォーム送信」イベントのさまざまな側面が e に割り当てられたオブジェクトに表示されます(表「スプレッドシート フォーム送信イベント」で説明)。具体的には、e.values は、ユーザーがフォームに入力した値を含む配列になります。

于 2013-04-29T06:21:41.880 に答える