0

我想這個代碼自動添加聯繫人使用觸發器時提交表單,但我得到的錯誤。 該代碼適用於電子表格,但我無法使用表單工作。 我是一種有編碼的noob。 所以簡單的解釋將有幫助我正在處理此代碼,以更新谷歌聯繫與谷歌形式和電子表格鏈接到它

此外,聯繫人獲取添加到谷歌聯繫人「其他」組,有沒有什麼辦法可以直接添加到「我的聯繫人」?

function createHeaders() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 

    // Freezes the first row 
    sheet.setFrozenRows(1); 

    // Set the values we want for headers 
    var values = [ 
    ["First Name", "Last Name", "Email", "Phone Number", "Company", "Notes"] 
    ]; 

    // Set the range of cells 
    var range = sheet.getRange("A1:F1"); 

    // Call the setValues method on range and pass in our values 
    range.setValues(values); 
} 

function createContact() { 
    var alreadyAdded = "Already added"; 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var startRow = 2; // First row of data to process 
    var numRows = 2; // Number of rows to process 

    // Fetch the range of cells A2:G3 
    var dataRange = sheet.getRange(startRow, 1, numRows, 8) 

    // Fetch values for each row in the Range. 
    var data = dataRange.getValues(); 
    for (var i = 0; i < data.length; ++i) { 
    var row = data[i]; 
    var firstName = row[0] 
    var lastName = row[1] 
    var emailAddress = row[2] 
    var phone = row[3] 
    var company = row[4] 
    var notes = row[5] 
    var addedAlready = row[6]; 

     if (addedAlready != alreadyAdded) { 
     // Create contact in Google Contacts 
     var contact = ContactsApp.createContact(firstName, lastName, emailAddress); 

     // Add values to new contact 
     contact.addCompany(company, ""); 
     contact.addPhone(ContactsApp.Field.WORK_PHONE, phone); 
     contact.setNotes(notes); 
     sheet.getRange(startRow + i, 7).setValue(alreadyAdded); 
     }; 
    }; 
}; 
+0

你得到的錯誤是什麼?你如何設置你的觸發器? –

+0

服務錯誤:ContactsApp:[行1,列384,元素gd:givenName]缺少所需的文本內容(第22行,文件「代碼」)....這是我收到的錯誤。 – Technocrat

+0

我正在使用表單提交觸發器。 – Technocrat

回答

0

我能夠通過一個或多個空字符串作爲參數傳遞給的createContact重現錯誤()方法:

var contact = ContactsApp.createContact("", "", ""); 

檢查通過登錄他們在您的數據數組中的值,看是否你在那裏有空串。您可以將代碼包裝在try塊中,防止程序執行停止錯誤。任何錯誤將被記錄在一個catch塊中

try { 
var contact = ContactsApp.createContact(a, b, c); 

} 

catch(error) { 

Logger.log(error); 

} 
+0

感謝您的支持。當我僅將它用於電子表格並更新數據時,它可以工作。但我無法將其添加到電子表格中。 – Technocrat

+0

我測試了鏈接到表單的表單中的所有內容。 1)確保您的表單已正確鏈接到表單。嘗試創建另一個表單和表單2)確保從腳本編輯器至少運行一次MANUALLY功能,以將所有必需的權限授予您的腳本。如果您沒有明確允許它訪問您的聯繫人,您的腳本將不會運行。 –

0

我看到你正試圖將你的Spreadsheet連接到Google Form。檢查Connecting to Google Forms

Apps Script allows you to connect Google Forms with Google Sheets through Forms and Spreadsheet services. This feature can automatically create a Google Form based on data in a spreadsheet. Apps Script also enables you to use triggers, such as onFormSubmit to perform a specific action after a user responds to the form.

你可能指的是onFormSubmit

以下是code demo供您參考。