簡體   English   中英

如何使用 GAS 將表單響應 object 轉換為二維數組,其中第一行是鍵/標題,第二行是值/答案?

[英]How to turn form responses object into a 2D array with the 1st row being the key/header and the 2nd the values/answers using GAS?

以下是傳入數據的到達方式:

let e = {"authMode":"FULL","namedValues":{"Question 1":["Answer question 1"],"Question 2":["Answer question 2"],"Question 3.":["Answer Question 3"]}}

這應該是這樣的:

[
 ["Question 1", "Question 2", "Question 3"],
 ["Answer question 1", "Answer question 2", "Answer question 3"]
]

我將努力使標題與目標工作表列標題相匹配,因此,上面的 object 需要轉換為類似的格式。

如何使用 Google Apps 腳本完成此操作? 我見過一些例子,但在這個例子中沒有找到。

謝謝!

是這樣的嗎?

   const e = { "authMode": "FULL", "namedValues": { "Question 1": ["Answer question 1"], "Question 2": ["Answer question 2"], "Question 3.": ["Answer Question 3"] } }
        
   const res = Object.entries(e.namedValues).reduce((acc, [questionNumber, answer]) => {
            acc[0].push(questionNumber)
            // spread answer because answer is an array
            acc[1].push(...answer)
            return acc
    }, [[], []])

或者更緊湊的方式不太容易理解

const res = Object.entries(e.namedValues).reduce((acc, [questionNumber, answer]) => [[...acc[0], questionNumber],[...acc[1], ...answer]] ,[[],[]]))

即使您已經編輯了表單,這也會起作用

編輯表單通常會導致給定問題的可用答案數量增加。

function onMyForm(e) {
  const arr = Object.keys(e.namedValues).reduce((a,c) => {
    if(c && c.length > 0 && !a.hasOwnProperty(c)) {
      a[1].push(e.namedValues[c][e.namedValues[c].length - 1]);
      a[0].push(c);
    }
    return a;
  },[[],[]])
  return arr;
}

暫無
暫無

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

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