簡體   English   中英

通過表單限制創建新的Google表格

[英]Create new Google Sheet from Form Respoinses

我正在使用多頁表單來完成4個任務,這些任務基於對第一頁上第一個問題的第一個答復而完成不同的任務。 其中之一是根據表單響應創建一個新的工作表。 如果要根據問題“選擇工人:”的響應尚未創建一個新工作表,然后將響應移至該工作表,我想創建一個新工作表。 我從另一個問題中找到了一個功能完美的函數,只是無法將工作表重命名為問題的答案,即“工人姓名”。

function onSubmit(e){
var sheet = e.range.getSheet();
var ss = sheet.getParent();
var form = FormApp.openByUrl(ss.getFormUrl());
// Choose destination sheet according to Select the worker:
var destSheet = getSheet(ss, e.namedValues['Select The Worker:']);
// Store the current response in destination sheet
destSheet.appendRow(e.values);

/**
 * Get the sheet with given name. Create sheet if it doesn't exist.
* New sheet will be created with optional headings, if provided.
*
* From: 
*
* @param {Spreadsheet} spreadsheet   Google Spreadsheet object.
* @param {String}      sheetName     Sheet name to get.
* @param {String[]}    headings      Optional array of headings (for new sheet).
*
* @returns {Sheet}                   Sheet object.
*/
function getSheet( spreadsheet, sheetName, headings ) {
 spreadsheet = SpreadsheetApp.getActive();
 var sheet = spreadsheet.getSheetByName(sheetName);
 if (sheet == null) {
  // Not found, so add new sheet
  sheet = spreadsheet.insertSheet(sheetName);
  if (headings && headings.constructor === Array) {
   sheet.getRange(1,1,1,headings.length).setValues([headings]);
 }
}

return sheet;
 }
}

我不確定是否遺漏了一些東西。 任何幫助是極大的贊賞。

我認為問題在於namedValues中的所有條目都是arrays 嘗試將e.namedValues['Select The Worker:']更改為e.namedValues['Select The Worker:'].toString()

根據Google Apps文檔 ,表單提交對象函數.namedValues()返回對象,您需要將變量或具有字符串數據類型的對象傳遞給方法.insertSheet(sheetname)

改為實施此。

var destSheet = getSheet(ss, e.namedValues['Select The Worker:'][0]);

您只需要指定對象內部數組的索引即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM