Google 試算表透過表單編輯資料 Sheet connect Form

Google Sheets 內可以建立一個輸入表單,做為問卷調查、報表名、測驗卷…等功能,
預設這是提供使用者新增一筆資料,當新增後離開表單畫面,要修改資料只能從指定儲存的 Google Sheets 中編輯。

而在 Awesome Table and Google Form 範例 中,資料列中點擊 [EDIT ENTRY] 可以開啟表單畫面做編輯。

筆者依樣畫葫蘆做一個簡單範例,先看一下執行的結果


範例說明

當 Google Sheet 接受從 Google Form傳入資料時,背景執行一段 Script 產生一個超連結在該列的第一個欄位上。

實作步驟

1. 建立 Google Sheets 並新增一個表單



在 Google Form 中設計輸入欄位


在 Google Form 右上角 Setting 中啟用送出後可編輯


從 Google Form 中新增一筆資料


在 Google 中第一欄 [Timestamp] 左側新增一欄,這欄內容將由 Script 中產生


2. 建立 Script 與 Trigger

進入 Script editor


複製 Google Apps Script,修改第一行網址中的 ID 與第二行的 Sheet 名稱 (sheetName)。

var formURL = 'https://docs.google.com/forms/d/1T7IDCVvO2Osb7SlqVgWzpQoFt4IkGd8s3FQS7AhKJI0/viewform/viewform';
var sheetName = 'Form Responses';
var columnIndex = 1 ;

function getEditResponseUrls() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  var data = sheet.getDataRange().getValues();
  var form = FormApp.openByUrl(formURL);
  for(var i = 1; i < data.length; i++) {
    if (data[i][1] != '' && data[i][columnIndex-1] == '') {
      var timestamp = data[i][1];
      var formSubmitted = form.getResponses(timestamp);
      if (formSubmitted.length < 1) continue;
      var editResponseUrl = '=HYPERLINK("'+formSubmitted[0].getEditResponseUrl()+'","修改資料")';
      sheet.getRange(i+1, columnIndex).setValue(editResponseUrl);
    }
  }
}

這段語法必須修改第一行中 Form 的 ID,這可以在編輯 Form 時網址列中取得,不是分享表單時看到 ID。
var formURL = 'https://docs.google.com/forms/d/1T7IDCVvO2Osb7SlqVgWzpQoFt4IkGd8s3FQS7AhKJI0/viewform/viewform';
紅字部分與下圖黃色須一致。



設定觸發 - 當 Google Sheet 接收資料後自動執行程序



點擊 [create a new trigger]



新增觸發的設定



完成上述步驟後,從 Google Form 再新增一筆資料時,可以發現第一欄出現編輯的超連結。



參考

Connect a Google Form to Awesome Table (Document)