2021年8月29日 星期日
2021年8月24日 星期二
Chapter 13 Adding different types of questions to a form
//Create new form - Global variable so it
can be seen by all functions
const FORM =
FormApp.create("Questionnaire");
function makeQuestionnaire() {
//Get data and last row from spreadsheet
const sh =
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
const data = sh.getDataRange().getValues();
//Loop through each question and check what
question type it is
data.forEach(checkQuestionType)
}
//function to check question type
function checkQuestionType(data){
if(data[1] === "text"){
makeTextQ(data);
}
else if(data[1] === "date"){
makeDateQ(data);
}
else if(data[1] === "duration"){
makeDurationQ(data);
}
else if(data[1] === "multiplec"){
makeMultipleCQ(data);
}
else if(data[1] === "list"){
makeListQ(data);
}
else if(data[1] === "scale"){
makeScaleQ(data);
}
else if(data[1] === "checkbox"){
makeCheckboxQ(data);
}
else if(data[1] === "grid"){
makeGridQ(data);
}
else if(data[1] === "paragraph"){
makeParagraphQ(data);
}
}
////Functions to make different types of
questions
//Make text question
function makeTextQ(data){
let
text = data[2];
let
item = FORM.addTextItem();
item.setTitle(text);
}
//Make date question
function makeDateQ(data){
let
date = data[2];
let
item = FORM.addDateItem();
item.setTitle(date);
item.setRequired(true);
}
//make duration question
function makeDurationQ(data){
let
duration = data[2];
let
item = FORM.addDurationItem();
item.setTitle(duration);
}
//make Multiple-Choice question
function makeMultipleCQ(data){
let
mcQuestion = data[2];
let
item = FORM.addMultipleChoiceItem();
item.setTitle(mcQuestion);
Logger.log(data);
//Getting options
let
trimmedData = data.filter(function(str) {
return /\S/.test(str);
});
//Getting options without spaces
let
slicedData = trimmedData.slice(3,trimmedData.length);
//Adding option to Form
item.setChoiceValues(slicedData);
}
//make List question
function makeListQ(data){
let
listQuestion = data[2];
let
item = FORM.addListItem();
item.setTitle(listQuestion);
let
trimmedData = data.filter(function(str) {
return /\S/.test(str);
});
let
slicedData = trimmedData.slice(3,trimmedData.length);
item.setChoiceValues(slicedData);
}
//make Scale question
function makeScaleQ(data){
let
scaleQ = data[2];
let
item = FORM.addScaleItem();
item.setTitle(scaleQ);
let
trimmedData = data.filter(function(str) {
return /\S/.test(str);
});
//Get and set lower and upper bounds of scale
let
lower = trimmedData.slice(3, 4);
let
upper = trimmedData.slice(4, 5);
item.setBounds(lower, upper);
//Set labels to lower and upper bounds
item.setLabels(trimmedData.slice(5, 6), trimmedData.slice(6, 7));
}
//make Checkbox question
function makeCheckboxQ(data){
let
checkboxQ = data[2];
let
item = FORM.addCheckboxItem();
item.setTitle(checkboxQ);
let
trimmedData = data.filter(function(str) {
return /\S/.test(str);
});
let
slicedData = trimmedData.slice(3,trimmedData.length);
item.setChoiceValues(slicedData);
}
//make Grid question
function makeGridQ(data){
let
gridQ = data[2];
let
item = FORM.addGridItem();
item.setTitle(gridQ);
let
trimmedData = data.filter(function(str) {
return /\S/.test(str);
});
//Find where "Columns:" text is in array
let
columnPosition = trimmedData.indexOf("Columns:");
//Get row values for grid
let
slicedDataRows = trimmedData.slice(3,columnPosition);
//Get column values for grid
let
slicedDataColumns = trimmedData.slice(columnPosition+1,trimmedData.length);
item.setRows(slicedDataRows);
item.setColumns(slicedDataColumns);
}
//make Paragraph question
function makeParagraphQ(data){
let
paragraphText = data[2];
let
item = FORM.addParagraphTextItem();
item.setTitle(paragraphText);
}
2021年8月16日 星期一
2021年8月14日 星期六
2021年8月10日 星期二
2021年8月4日 星期三
2021年8月2日 星期一
2021年8月1日 星期日
每個人都能有平等的特權
教義和聖約 88:122 在你們當中指定一位教師,不要讓大家同時作發言人;一次只讓一人發言,而大家都要聽他說話,好讓大家說完後,所有的人都能彼此啟發,而每個人都能有平等的特權。
有時候教師為了提高課程品質,或怕上課中遇到冷場,會事先指派一些弟兄姊妹們在上課中發言。然而,教師可能會覺得這些事先被指派的弟兄姊妹們應有優先發言的權利,而且必須要給他們在上課中發言的機會,如此一來,那些沒有被事先指派發言的弟兄姊妹們的發言特權就減少了;尤其是當教師事先指派發言的人數太多的情況。
2021年7月31日 星期六
2021年7月27日 星期二
2021年7月24日 星期六
2021年7月23日 星期五
2021年7月21日 星期三
2021年7月19日 星期一
救主為我們做了什麼?
達林·鄔克司會長,總會會長團第一諮理,在2021年4月總會大會的演講中,提起多年前的一個回憶。藉著這個回憶,他教導了「祂為我做了什麼?」。聽過這個演講,並再次研讀這篇演講,我獲得進一步的心得,並想起我自己的一個回憶。
多年前,有一位50多歲的弟兄,受洗2年多,不太積極,許久才會出席一次安息日聚會。有一個安息日,我注意到他來參加聚會,藉機和他談話,並引用摩爾門經第一章的故事,期許他說:「恭禧你!你就像你們家的李海,準備好帶領家人要進入主的應許地,獲得主的美好祝福。」他的回答令我錯愕!「李海是誰?主能給我什麼祝福?我都靠自己賺錢!」
我加入教會已經28年了,一直在教會中和弟兄姊妹們一起學習。我感謝許多努力學習的弟兄姊妹們分享他們的美好見證和熱心服務的榜樣。然而,對於同樣進入了主的羊圈,而卻沒有努力學習福音的弟兄姊妹們,我為他們感到憂心和婉惜。
例如上述的那一位弟兄,後來車禍過世,留下妻子和正值青少年時期的三個孩子。他們都沒有加入教會,也沒有在教會或家中學習到福音。從他自己不知道「李海是誰?」「救主能給我什麼祝福?」,我們可以得知他也不曾在家中學習復興的福音及教導福音。
雖然在經濟上不虞匱乏,他的家人在他過世之後,分崩離析。每次他的遺霜遇到我的時候,總是向我抱怨她的孩子們的懶惰和叛離,她認定自己是個苦命人。我知道教會中有些弟兄姊妹們曾來施助她的家人,但是他們只是期朌環境改變,或得到更多資源,而自己卻不學習和改變。
達林·鄔克司會長,總會會長團第一諮理,在2021年4月總會大會中回憶起多年前,一位已經在教會中許久不活躍的姊妹,應邀出席一場支聯會的晚間大會。但她表示她想不出任何她應該回來的理由。當時的達林·鄔克司長老鼓勵她,說:「想到救主為我們所做的一切,你難道不覺得有很多理由要回到教會來崇拜和事奉祂嗎?」她回答讓達林·鄔克司長老很驚訝:「祂為我做了什麼?」
「祂為我做了什麼?」是每一個人都要終身學習,而且需要努力回應,來獲得祝福的。我希望弟兄姊妹們「自己」好好地重新閱讀,或收看這篇演講。然後我們可以在這群組中藉著討論來分享。
達林·鄔克司會長,教導了救主為我們所做的四項最重要的事。大家可以從他的演講詞中得知,我在此暫時不提。而我覺得救主每天都活在我的生活中,祂賜給我的,就像傾盆大雨一樣,從天而降。我的日記來不及記下每一項,但我多少都記一二件,希望我的家族後代可以從我的日記中看到「救主為我做了什麼?」
2021年7月17日 星期六
2021年7月16日 星期五
學測及指試題分句程式(備份)
var app=SpreadsheetApp;
var ss=app.getActiveSpreadsheet();
var shCode=ss.getSheetByName('考題編碼');
var shGSAT=ss.getSheetByName('學測');
var shASTS=ss.getSheetByName('指考');
var shGSentence=ss.getSheetByName('學測分句');
var shASentence=ss.getSheetByName('指考分句');
const YEAR_COLUMN=2; // 年度, 110,109...
const CAT_COLUMN=3; // 考試類別,學測或指考
const QN1_COLUMN=4; // 試題編號1, 題組的開始題號
const QN2_COLUMN=5; // 試題編號2, 題組的結束題號
const QTYPE_COLUMN=6; // 題型 V,C,M,R,T
const QUESTION_COLUMN=7; // 試題
const ANSWER_COLUMN=8; // 答案
var numRows=shGSAT.getDataRange().getLastRow()-1; // 學測的資料列總數,扣除標題列
var rowG=1; // 學測輸入的列指標標
var rowGS=1; // 學測分句輸出的列指標
function onOpen() {
// Get the Ui Object.
var ui=SpreadsheetApp.getUi();
// Create and add a named menue and its items to the menu bar.
ui.createMenu('試題分句')
.addItem('學測分句','extractSentenceGSAT')
.addItem('指考分句','extractSentenceASTS')
.addToUi();
}
function extractSentenceGSAT(){
// 學測題分句
/**
var rows=shGSentence.getLastRow();
var cols=shGSentence.getLastColumn();
shGSentence.getRange(2,1,rows-1,cols).clear();
*/
rowGS=1; // 學測分句輸出的列指標,第一列是標題,輸出時從第二列開始
// 對於「學測」所有的試題
for (rowG=2;rowG<=26;rowG++) // 測試時使用定值;正式用 numRows
{
// 對於每一列的試題,取出題型
var qType=shGSAT.getRange(rowG,QTYPE_COLUMN).getValue(); // 題型
switch (qType) { // 根據不同題型的資料結構來演算
case 'V':
qTypeV_(rowG);
break;
case 'C':
qTypeC_(rowG);
break;
case 'M':
qTypeM_(rowG);
break;
case 'R':
qTypeR_(rowG);
break;
case 'T':
qTypeT_(rowG);
break;
default:
Logger.log("QType Error!");
break;
}
}
}
function qTypeV_(rowG){
var year=shGSAT.getRange(rowG,YEAR_COLUMN).getValue(); // 年度
var cat=shGSAT.getRange(rowG,CAT_COLUMN).getValue(); // 考試類別
var qn1=shGSAT.getRange(rowG,QN1_COLUMN).getValue(); // 試題編號1
// var qn2=shGSAT.getRange(rowG,QN2_COLUMN).getValue(); // 試題編號2
var qType=shGSAT.getRange(rowG,QTYPE_COLUMN).getValue(); // 題型
var strQuestion=shGSAT.getRange(rowG,QUESTION_COLUMN).getValue(); // 試題
var strLen=strQuestion.length; // 字串的長度
//+ 處理一列的句子群,
var i=0; // 字串的指標
var qn2=0;
// 分句寫出,直到遇到選項群
while ((strQuestion[i]!="(")&&(i<=strLen-1)){
var strSentence="";
// 發現句子結束時,寫出句子
while ((matchSentence_(strQuestion,i)==0)&&
(strQuestion[i]!="(")&&(i<=strLen-1)){
//* 處理一個句子
strSentence+=strQuestion[i];
i++;
}
if (matchSentence_(strQuestion,i)>0)
{
rowGS++;
qn2++; // 每一筆學測題從1起算
shGSentence.getRange(rowGS,YEAR_COLUMN).setValue(year);
shGSentence.getRange(rowGS,CAT_COLUMN).setValue(cat);
shGSentence.getRange(rowGS,QN1_COLUMN).setValue(qn1);
shGSentence.getRange(rowGS,QN2_COLUMN).setValue(qn2);
shGSentence.getRange(rowGS,QTYPE_COLUMN).setValue(qType);
strSentence+=strQuestion[i];
if (matchSentence_(strQuestion,i)==2){
strSentence+=strQuestion[i+1];
i+=2;
} else {
i++;
}
shGSentence.getRange(rowGS,QUESTION_COLUMN).setValue(strSentence);
if (strQuestion[i]==" ") {
i++; // bypass 空白
}
}
}
//+ 處理選項群
strSentence=strQuestion[i];
i++;
while (i<=strLen-1){
strSentence+=strQuestion[i];
i++;
}
rowGS++;
qn2++;
shGSentence.getRange(rowGS,YEAR_COLUMN).setValue(year);
shGSentence.getRange(rowGS,CAT_COLUMN).setValue(cat);
shGSentence.getRange(rowGS,QN1_COLUMN).setValue(qn1);
shGSentence.getRange(rowGS,QN2_COLUMN).setValue(qn2);
shGSentence.getRange(rowGS,QTYPE_COLUMN).setValue(qType);
shGSentence.getRange(rowGS,QUESTION_COLUMN).setValue(strSentence);
}
function matchSentence_(strQuestion,i) {
if (strQuestion.substr(i-1,4)=='i.e.') { // 特殊情況的 . 非句點
return 0;
}
if (strQuestion.substr(i-3,4)=='i.e.') { // 特殊情況的 . 非句點
return 0;
}
if (strQuestion.substr(i-1,4)=='B.C.') { // 特殊情況的 . 非句點
return 0;
}
if (strQuestion.substr(i-3,4)=='B.C.') { // 特殊情況的 . 非句點
return 0;
}
if ((strQuestion[i]==".")||(strQuestion[i]=="?")||(strQuestion[i]=="!")) {
if ((strQuestion[i+1]=='"')||(strQuestion[i+1]=='”')) {
return 2; // 句尾為兩個符號;即為 .", 或 ?", 或 !"
}else {
return 1; // 句尾為單一符號;即為., 或 ?, 或 !
}
} else {
return 0; // 以上皆非;即非句尾。
}
}
function qTypeC_(rowG){
var year=shGSAT.getRange(rowG,YEAR_COLUMN).getValue(); // 年度
var cat=shGSAT.getRange(rowG,CAT_COLUMN).getValue(); // 考試類別
var qn1=shGSAT.getRange(rowG,QN1_COLUMN).getValue(); // 試題編號1
// var qn2=shGSAT.getRange(rowG,QN2_COLUMN).getValue(); // 試題編號2
var qType=shGSAT.getRange(rowG,QTYPE_COLUMN).getValue(); // 題型
var strQuestion=shGSAT.getRange(rowG,QUESTION_COLUMN).getValue(); // 試題
var strLen=strQuestion.length; // 字串的長度
//+ 處理一列的句子群,
var i=0; // 字串的指標
var qn2=0;
// 分句寫出,直到遇到選項群
// matchCItem_ 遇到選項時,會傳回 8 或 7,否則會傳回 0
while ((matchCItem_(strQuestion,i)==0)&&(i<=strLen-1)){
var strSentence="";
// 發現句子結束時,寫出句子
// matchSentence_ 遇到句點、問號、或驚歎號時,會傳回 2 或 1,否則會傳回 0
while ((matchSentence_(strQuestion,i)==0)&&
(matchCItem_(strQuestion,i)==0)&&(i<=strLen-1)){
//* 處理一個句子
strSentence+=strQuestion[i];
i++;
}
if (matchSentence_(strQuestion,i)>0) // 發現句子結束
{
rowGS++;
qn2++;
shGSentence.getRange(rowGS,YEAR_COLUMN).setValue(year);
shGSentence.getRange(rowGS,CAT_COLUMN).setValue(cat);
shGSentence.getRange(rowGS,QN1_COLUMN).setValue(qn1);
shGSentence.getRange(rowGS,QN2_COLUMN).setValue(qn2);
shGSentence.getRange(rowGS,QTYPE_COLUMN).setValue(qType);
strSentence+=strQuestion[i];
if (matchSentence_(strQuestion,i)==2){ // .", 或 ?", 或 !"
strSentence+=strQuestion[i+1];
i+=2;
} else {
i++;
}
shGSentence.getRange(rowGS,QUESTION_COLUMN).setValue(strSentence);
if (strQuestion[i]==" ") {
i++; // bypass 空白
}
}
}
//+ 處理選項群
while (i<=strLen-1){
// matchCItem_ 遇到選項時,會傳回 8 或 7,否則會傳回 0
if (matchCItem_(strQuestion,i)>0){
strSentence=strQuestion.substr(i,matchCItem_(strQuestion,i));
i+=matchCItem_(strQuestion,i);
}
// 處理一個選項,連接後續字元,直到遇到下一個選項,或字串結束
while ((matchCItem_(strQuestion,i)==0)&&(i<=strLen-1)){
strSentence+=strQuestion[i];
i++;
}
// 新增一筆到學測分句試算表的下一列
rowGS++;
qn2++;
shGSentence.getRange(rowGS,YEAR_COLUMN).setValue(year);
shGSentence.getRange(rowGS,CAT_COLUMN).setValue(cat);
shGSentence.getRange(rowGS,QN1_COLUMN).setValue(qn1);
shGSentence.getRange(rowGS,QN2_COLUMN).setValue(qn2);
shGSentence.getRange(rowGS,QTYPE_COLUMN).setValue(qType);
shGSentence.getRange(rowGS,QUESTION_COLUMN).setValue(strSentence);
}
}
function matchCItem_(strQuestion,i){
if (i>(strQuestion.length-9)){
return 0;
}
if ((strQuestion[i]>='0' && strQuestion[i]<='9') &&
(strQuestion[i+1]>='0' && strQuestion[i+1]<='9') &&
(strQuestion.substr(i+2,6)==". (A) ")){
return 8; // 兩位數字加 ". (A) " 共八位
}
if ((strQuestion[i]>='0' && strQuestion[i]<='9') &&
(strQuestion.substr(i+1,6)==". (A) ")){
return 7; // 一位數字加 ". (A) " 共七位
}
return 0;
}
function qTypeM_(rowG){
var year=shGSAT.getRange(rowG,YEAR_COLUMN).getValue(); // 年度
var cat=shGSAT.getRange(rowG,CAT_COLUMN).getValue(); // 考試類別
var qn1=shGSAT.getRange(rowG,QN1_COLUMN).getValue(); // 試題編號1
// var qn2=shGSAT.getRange(rowG,QN2_COLUMN).getValue(); // 試題編號2
var qType=shGSAT.getRange(rowG,QTYPE_COLUMN).getValue(); // 題型
var strQuestion=shGSAT.getRange(rowG,QUESTION_COLUMN).getValue(); // 試題
var strLen=strQuestion.length; // 字串的長度
//+ 處理一列的句子群,
var i=0; // 字串的指標
var qn2=0;
// 分句寫出,直到遇到選項群
while ((strQuestion.substr(i,3)!="(A)")&&(i<=strLen-1)){
var strSentence="";
// 發現句子結束時,寫出句子
while ((matchSentence_(strQuestion,i)==0)&&
(strQuestion[i]!="(")&&(i<=strLen-1)){
//* 處理一個句子
strSentence+=strQuestion[i];
i++;
}
if (matchSentence_(strQuestion,i)>0)
{
rowGS++;
qn2++; // 每一筆學測題從1起算
shGSentence.getRange(rowGS,YEAR_COLUMN).setValue(year);
shGSentence.getRange(rowGS,CAT_COLUMN).setValue(cat);
shGSentence.getRange(rowGS,QN1_COLUMN).setValue(qn1);
shGSentence.getRange(rowGS,QN2_COLUMN).setValue(qn2);
shGSentence.getRange(rowGS,QTYPE_COLUMN).setValue(qType);
strSentence+=strQuestion[i];
if (matchSentence_(strQuestion,i)==2){
strSentence+=strQuestion[i+1];
i+=2;
} else {
i++;
}
shGSentence.getRange(rowGS,QUESTION_COLUMN).setValue(strSentence);
if (strQuestion[i]==" ") {
i++; // bypass 空白
}
}
}
//+ 處理選項群
strSentence=strQuestion[i];
i++;
while (i<=strLen-1){
strSentence+=strQuestion[i];
i++;
}
rowGS++;
qn2++;
shGSentence.getRange(rowGS,YEAR_COLUMN).setValue(year);
shGSentence.getRange(rowGS,CAT_COLUMN).setValue(cat);
shGSentence.getRange(rowGS,QN1_COLUMN).setValue(qn1);
shGSentence.getRange(rowGS,QN2_COLUMN).setValue(qn2);
shGSentence.getRange(rowGS,QTYPE_COLUMN).setValue(qType);
shGSentence.getRange(rowGS,QUESTION_COLUMN).setValue(strSentence);
}
function qTypeR_(rowG){
var year=shGSAT.getRange(rowG,YEAR_COLUMN).getValue(); // 年度
var cat=shGSAT.getRange(rowG,CAT_COLUMN).getValue(); // 考試類別
var qn1=shGSAT.getRange(rowG,QN1_COLUMN).getValue(); // 試題編號1
// var qn2=shGSAT.getRange(rowG,QN2_COLUMN).getValue(); // 試題編號2
var qType=shGSAT.getRange(rowG,QTYPE_COLUMN).getValue(); // 題型
var strQuestion=shGSAT.getRange(rowG,QUESTION_COLUMN).getValue(); // 試題
var strLen=strQuestion.length; // 字串的長度
//+ 處理一列的句子群,
var i=0; // 字串的指標
var qn2=0;
// 分句寫出,直到遇到選項群
// matchRItem_ 遇到選項時,會傳回 4 或 3,否則會傳回 0
while ((matchRItem_(strQuestion,i)==0)&&(i<=strLen-1)){
var strSentence="";
// 發現句子結束時,寫出句子
// matchSentence_ 遇到句點、問號、或驚歎號時,會傳回 2 或 1,否則會傳回 0
while ((matchSentence_(strQuestion,i)==0)&&
(matchRItem_(strQuestion,i)==0)&&(i<=strLen-1)){
//* 處理一個句子
strSentence+=strQuestion[i];
i++;
}
if (matchSentence_(strQuestion,i)>0) // 發現句子結束
{
rowGS++;
qn2++;
shGSentence.getRange(rowGS,YEAR_COLUMN).setValue(year);
shGSentence.getRange(rowGS,CAT_COLUMN).setValue(cat);
shGSentence.getRange(rowGS,QN1_COLUMN).setValue(qn1);
shGSentence.getRange(rowGS,QN2_COLUMN).setValue(qn2);
shGSentence.getRange(rowGS,QTYPE_COLUMN).setValue(qType);
strSentence+=strQuestion[i];
if (matchSentence_(strQuestion,i)==2){ // .", 或 ?", 或 !"
strSentence+=strQuestion[i+1];
i+=2;
} else {
i++;
}
shGSentence.getRange(rowGS,QUESTION_COLUMN).setValue(strSentence);
if (strQuestion[i]==" ") {
i++; // bypass 空白
}
}
}
//+ 處理選項群
while (i<=strLen-1){
// matchCItem_ 遇到選項時,會傳回 4 或 3,否則會傳回 0
if (matchRItem_(strQuestion,i)>0){
strSentence=strQuestion.substr(i,matchRItem_(strQuestion,i));
i+=matchRItem_(strQuestion,i);
}
// 處理一個選項,連接後續字元,直到遇到下一個選項,或字串結束
while ((matchRItem_(strQuestion,i)==0)&&(i<=strLen-1)){
strSentence+=strQuestion[i];
i++;
}
// 新增一筆到學測分句試算表的下一列
rowGS++;
qn2++;
shGSentence.getRange(rowGS,YEAR_COLUMN).setValue(year);
shGSentence.getRange(rowGS,CAT_COLUMN).setValue(cat);
shGSentence.getRange(rowGS,QN1_COLUMN).setValue(qn1);
shGSentence.getRange(rowGS,QN2_COLUMN).setValue(qn2);
shGSentence.getRange(rowGS,QTYPE_COLUMN).setValue(qType);
shGSentence.getRange(rowGS,QUESTION_COLUMN).setValue(strSentence);
}
}
function matchRItem_(strQuestion,i){
// 確保第 i-1 字非連續數字,避免句尾的 2010. 被視為選項的開始
if ((strQuestion[i-1]<'0' || strQuestion[i-1]>'9')&&
(strQuestion[i]>='0' && strQuestion[i]<='9') &&
(strQuestion[i+1]>='0' && strQuestion[i+1]<='9') &&
(strQuestion.substr(i+2,2)==". ")){
return 4; // 兩位數字加 ". " 共四位
}
// 確保第 i-1 字非連續數字,避免句尾的 2010. 被視為選項的開始
if ((strQuestion[i-1]<'0' || strQuestion[i-1]>'9')&&
(strQuestion[i]>='0' && strQuestion[i]<='9') &&
(strQuestion.substr(i+1,2)==". ")){
return 3; // 一位數字加 ". " 共三位
}
return 0;
}
function qTypeT_(rowG){
rowGS++;
qn2=1;
var inputRow=shGSAT.getRange(rowG,1,1,8).getValues();
shGSentence.getRange(rowGS,1,1,8).setValues(inputRow);
shGSentence.getRange(rowGS,QN2_COLUMN).setValue(qn2);
}
function extractSentenceASTS(){}
2021年7月13日 星期二
2021年7月11日 星期日
2021年7月10日 星期六
2021年7月9日 星期五
2021年7月8日 星期四
Finite verb限定動詞, non-finite verb非限定動詞, auxiliary verb助動詞
3種動詞,Finite verb限定動詞, non-finite verb非限定動詞, auxiliary verb助動詞,如何涵蓋100%英文句子【普通話版】| 〈7+3視覺英語:阿土零碎英文文法〉
2021年7月3日 星期六
語意和語法分析圖
63Central to that faith is trusting His will and timetable—how and when He will bless you with the miraculous help you desire.
63這種信心的核心就是信賴祂的旨意和時間表,信賴祂會照祂的方式和時間,使你蒙受你所渴望的奇蹟與協助。
2021年6月29日 星期二
2021年6月28日 星期一
2021年6月24日 星期四
CodePen (HTML/CSS/JavaScript)
| |
|

















































