實況紀錄用
  • 關於我
  • 關於Speedrun
    • SpeedRun成績紀錄
  • 套路筆記
    • RM1 穿天花板
    • RM2 樹木人異空間走法
    • RM5 穿越BOSS房
    • Rockman Zero 2
    • Rockman Zero 4
    • Rockman ZXA
    • Resident Evil Village 流程筆記 (No OOB)
  • 遊戲分享
    • 極限逃脫系列
    • 逆轉系列作品
  • OBS疑難雜症
    • Twitch 抽獎程式 !!
    • 自訂OBS介面
    • 如何讓OBS不輸出Discord語音(不使用虛擬音頻)
    • SKLIVE聊天室更改頻道
    • SKlive Chat 頭像放大
    • 如何在使用媒體來源時聽到影片聲音
    • OBS低延遲
    • OBS 24.0 動態防掉幀
  • Nightbot 指令
    • !CC
    • !投
    • !骰
    • 活動台指令 : !今
    • 譴責FM (計數器)
Powered by GitBook
On this page
  • Nightbot
  • GAS

Was this helpful?

  1. Nightbot 指令

!投

讓觀眾自行投稿到Google Sheet 的功能

Nightbot

query和User前要記得加encodeURI 去轉譯成網址看得懂的編碼

$(urlfetch json https://script.google.com/macros/s/AKfycbyvKoTNgiOvgSPrI6Y5wb75fxj7WdqqRefSR-0orFzgkDq5YGprHZ6TiU3yIjjTh7yKHQ/exec?action=addRow&msg=$(eval encodeURI("$(query)"))&user=$(eval encodeURI("$(user)")))

GAS

const SpreadSheetID = "你的SheetID";
const SpreadSheet = SpreadsheetApp.openById(SpreadSheetID);

function getSheet(sheetName) {
  return SpreadSheet.getSheetByName(sheetName);
}

//投票
function appendSheetCellInNewRow(sheetName, userName ,cellData) {
  const Sheet = getSheet(sheetName);
  const newRow = Sheet.getLastRow() + 1;
  //把值做成Array,以空白分割
  const dataArray = cellData.split(" ");
  var userRow = 0;

  //如果有投稿過的,抓Username在哪一列
  for (let u=1; u<newRow; u++){
    if(Sheet.getRange(u, 1).getValue() == userName){
      userRow = u;
    }
  }

  //如果有抓到Username,修改列
  if(userRow != 0){
  
      //找到User那一列重新寫入
      Sheet.getRange(userRow, 1).setValue(userName);
      
      //按照Array長度計算欄位長度放進值(不超過3個欄位)
      if(dataArray.length<3){
        for(let i=0; i<dataArray.length; i++){
        Sheet.getRange(userRow, i+2).setValue(dataArray[i]);
        }
      }
      else{
        for(let i=0; i<3; i++){
        Sheet.getRange(userRow, i+2).setValue(dataArray[i]);
      }
    }
  }
  //沒抓到Username,新投稿者
  else{
      //新增一列
      Sheet.getRange(newRow, 1).setValue(userName);
      
      //按照Array長度計算欄位長度放進值
      if(dataArray.length<3){
        for(let i=0; i<dataArray.length; i++){
        Sheet.getRange(newRow, i+2).setValue(dataArray[i]);
        }
      }
      else{
        for(let i=0; i<3; i++){
        Sheet.getRange(newRow, i+2).setValue(dataArray[i]);
      }
    }
  }
}



function doGet(e) {
  //取得參數
  const params = e?.parameter;
  //沒有東西回報nodata
  if(!params){
    return ContentService.createTextOutput("no data");
  }
  
  if(params.msg==""){
    return ContentService.createTextOutput("no data");
  }

  switch(params.action){
    case 'addRow':
    appendSheetCellInNewRow('NYB_2023',params.user,params.msg);
    return ContentService.createTextOutput(params.user+'提交成功 , https://reurl.cc/qZAQ0E');
    break;

    default:
    return ContentService.createTextOutput(params.user+'提交失敗');
    break;
  }
}
Previous!CCNext!骰

Last updated 2 years ago

Was this helpful?