เพิ่มสูตร&Dropdown ในSheet อัตโนมัติ เมื่อมีผู้กรอกForm

เมื่อมีผู้กรอกGoogle Form อยากให้นำข้อมูลที่ผู้ใช้กรอก มาเข้าสูตรคำนวณและบันทึกเป็นคอลัมน์ใหม่ แต่ถ้าใส่สูตรไว้ตั้งแต่แรก พอมีผู้มากรอกฟอร์มสูตรก็ดันหายไปด้วย วันนี้มาดูวิธีแก้ไขกันนะครับ 🙂 🙂 🙂

ปล.บทความนี้รองรับการเพิ่ม Dropdown แบบอัตโนมัติด้วยนะครับ 🙂 🙂 🙂

// Presented by BrilliantPy

// Editable
let sheetName = "การตอบแบบฟอร์ม 1";
let sheetDataName = "ชีต2";
let lengthDropdown = "!$A$1:$A$5";
let indexCol = {"ประทับเวลา":0,"ชื่อ - สกุล":1,"อีเมล":2,"ชื่อ":3,"ผู้ควบคุม":4,"update_status":5}
let colStatusName= "update_status";
let colFormula1 = "D";
let colDropdown = "E";
let colStatus = "F";

// Init
let updatedStatus = "UPDATED";
let ss,sheet,lastRow,lastCol,range,values;

async function createDropdown() {
  await initSpreadSheet();
  for (let i=0;i<lastRow;i++) {
    if (i == 0) {
      continue;
    }
    let cur_data = values[i];
    let cur_status = cur_data[indexCol[colStatusName]];
    let numRow = i+1;
    console.log("cur_data:",cur_data)
    if (cur_status != updatedStatus) {
      addCustomData(numRow);
      updateColStatus(numRow);
    }
  }
};
async function initSpreadSheet() {
  return new Promise(function(resolve) {
    ss = SpreadsheetApp.getActive();
    sheet = ss.getSheetByName(sheetName);
    lastRow = sheet.getLastRow();
    lastCol = sheet.getLastColumn();
    range = sheet.getDataRange();
    values = range.getValues();
    resolve();
    console.log('initSpreadSheet completed');
  });
}
function updateColStatus(numRow) {
  sheet.getRange(colStatus.concat(numRow)).setValue(updatedStatus);
  console.log('updatedStatus completed');
}
function addCustomData(numRow) {
  // Add dropdown
  ss.getRange(`'${sheetName}'!${colDropdown}${numRow}`).setDataValidation(SpreadsheetApp.newDataValidation().setAllowInvalid(true)
  .requireValueInRange(ss.getRange(`'${sheetDataName}'${lengthDropdown}`), true).build());

  // Add formula
  sheet.getRange(colFormula1.concat(numRow)).setFormula('=LEFT(B2,FIND(" ",B2)-1)');
}

24 thoughts on “เพิ่มสูตร&Dropdown ในSheet อัตโนมัติ เมื่อมีผู้กรอกForm

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *