Åtgärder

Skillnad mellan versioner av "Skapa frågor i ett googleformulär med AI"

Från Skolbok

m
m
 
Rad 105: Rad 105:
 
       svar: ["Rätt alternativ", "Fel alternativ", "Fel alternativ", "Fel alternativ"]
 
       svar: ["Rätt alternativ", "Fel alternativ", "Fel alternativ", "Fel alternativ"]
 
     },
 
     },
 +
 +
Eventuellt måste du lägga till följande text i prompten:
 +
 +
Jag vill ha en ren JSON-lista där varje fråga är ett objekt {} och hela listan är omsluten av en enda uppsättning hakparenteser [].
  
 
OBS Sista frågan får inte ha ett komma efter sista måsvingen.
 
OBS Sista frågan får inte ha ett komma efter sista måsvingen.

Nuvarande version från 16 november 2025 kl. 10.58

Många AI kan få in frågor och svar från en inkopierad text som AI:n sedan skapar frågor från. Men med Gemini går det också rätt lätt att skapa ett formulär med frågorna inlagda genom ett Google Apps Script.


Prompt

Börja med att ta fram frågorna. Det underlättar mycket vid rättningen om det översta alternativet alltid är rätt, om du vill kopiera frågor inom formuläret. Anta att du ska skapa frågor från en text om de första civilisationerna:

Du är lärare i historia. Du ska skapa 15 frågor utifrån den text jag ger dig. Frågorna ska besvaras av elever som är 12 år gamla och anpassas efter deras ålder. Varje fråga ska ha fyra olika alternativ men bara det första alternativet ska vara rätt. Skapa sedan ett Google Apps Script som skapar ett nytt formulär och skapar alla frågorna inuti formuläret.

(Klistra in texten här)

Scriptet

function skapaCivilisationsQuiz() {

 // Skapa formulär
 const form = FormApp.create('De första civilisationerna – Frågesport');
 form.setDescription('Svara på frågorna om de första civilisationerna. Läs noggrant och välj det alternativ du tror är rätt. Lycka till! 🌍');
 form.setIsQuiz(true);
 // Frågebanken
 const frågor = [
   {
     fråga: "Vad menas med att människor blev bofasta?",
     svar: ["Att de stannade på en plats och började odla marken", "Att de flyttade runt för att hitta mat", "Att de började bygga båtar", "Att de flyttade till bergen"]
   },
   {
     fråga: "Varför ökade befolkningen när människor blev bönder?",
     svar: ["För att familjer fick fler barn som kunde hjälpa till", "För att färre blev sjuka", "För att människor flyttade till städer", "För att klimatet blev kallare"]
   },
   {
     fråga: "Vad kallas de första stora samhällena med städer och skriftspråk?",
     svar: ["Civilisationer", "Kulturer", "Folkgrupper", "Föreningar"]
   },
   {
     fråga: "När började de första civilisationerna växa fram?",
     svar: ["Ungefär 3500 f.Kr.", "Ungefär 1000 e.Kr.", "Ungefär 1500 e.Kr.", "Ungefär 500 f.Kr."]
   },
   {
     fråga: "Varför behövde människor samarbeta i de första byarna?",
     svar: ["För att bygga dammar och kanaler för bevattning", "För att kunna jaga stora djur", "För att tillverka vapen", "För att resa till andra länder"]
   },
   {
     fråga: "Vad ledde till att byar växte till städer?",
     svar: ["Samarbete och gemensam ledning", "Krig mellan byarna", "Flykter från andra områden", "Fler husdjur"]
   },
   {
     fråga: "Vad hände med kvinnors och mäns roller när människor blev bofasta?",
     svar: ["Män fick mer makt och kvinnor tog hand om hemmet", "Kvinnor blev ledare och män stannade hemma", "Alla fick samma uppgifter", "Kvinnor började resa mer"]
   },
   {
     fråga: "Vad betyder att ett samhälle är patriarkalt?",
     svar: ["Att män har mest makt", "Att kvinnor styr", "Att alla är lika mycket värda", "Att barnen bestämmer"]
   },
   {
     fråga: "Varför fick skrivare högre status än bönder?",
     svar: ["För att det var svårt att lära sig skriva", "För att de ägde mer mark", "För att de var starkare", "För att de bodde i större hus"]
   },
   {
     fråga: "Vad menas med samhällsklasser?",
     svar: ["Att människor delas in efter yrke och ställning", "Att barn går i olika skolor", "Att människor tävlar mot varandra", "Att alla har samma jobb"]
   },
   {
     fråga: "Vilka stod längst ner i samhällspyramiden i de första civilisationerna?",
     svar: ["Slavarna", "Prästerna", "Skrivarna", "Handelsmännen"]
   },
   {
     fråga: "Vad trodde man om ledarna i de första civilisationerna?",
     svar: ["Att de var utvalda av gudarna", "Att de valdes av folket", "Att de alltid var kvinnor", "Att de inte hade någon makt"]
   },
   {
     fråga: "Varför började krig i de första civilisationerna?",
     svar: ["För att ledarna ville ha mer mark och resurser", "För att människor gillade att slåss", "För att vädret var dåligt", "För att de inte hade skriftspråk"]
   },
   {
     fråga: "Vad användes de första skrifterna till?",
     svar: ["För att skriva listor över handelsvaror", "För att skriva dikter och sagor direkt", "För att räkna stjärnor", "För att lära sig nya språk"]
   },
   {
     fråga: "Varför växte civilisationerna i Mesopotamien och Egypten fram nära floder?",
     svar: ["För att där fanns vatten till jordbruket", "För att det var kallt där", "För att bergen skyddade dem", "För att de ville bygga stora skepp"]
   }
 ];
 // Skapa frågorna
 frågor.forEach((obj) => {
   const item = form.addMultipleChoiceItem();
   item.setTitle(obj.fråga)
       .setChoices(obj.svar.map((s, i) => item.createChoice(s, i === 0))) // Första svaret är rätt
       .setPoints(1)
       .setRequired(true);
 });
 Logger.log('Formulär skapat: ' + form.getEditUrl());

}


Om JSON

Som du ser har frågorna ett speciellt mönster, används i JSON filer. Det går att be valfri AI att skapa frågorna på samma sätt. Enklast genom att be den formatera frågorna som JSON och/eller ge följande exempel

   {
     fråga: "Frågetext?",
     svar: ["Rätt alternativ", "Fel alternativ", "Fel alternativ", "Fel alternativ"]
   },

Eventuellt måste du lägga till följande text i prompten:

Jag vill ha en ren JSON-lista där varje fråga är ett objekt {} och hela listan är omsluten av en enda uppsättning hakparenteser [].

OBS Sista frågan får inte ha ett komma efter sista måsvingen.

Då ser funktionen ut som följande:




function skapaCivilisationsQuiz() {

 // Skapa formulär, byt namn och beskrivning så det stämmer med provet eller läxförhöret
 const form = FormApp.create('De första civilisationerna – Frågesport');
 form.setDescription('Svara på frågorna om de första civilisationerna. Läs noggrant och välj det alternativ du tror är rätt. Lycka till! 🌍');
 form.setIsQuiz(true);
 // Frågebanken
 const frågor = [
(KLISTRA IN DINA JSON-FORMATERADE FRÅGOR HÄR)
 ];
 // Skapa frågorna
 frågor.forEach((obj) => {
   const item = form.addMultipleChoiceItem();
   item.setTitle(obj.fråga)
       .setChoices(obj.svar.map((s, i) => item.createChoice(s, i === 0))) // Första svaret är rätt
       .setPoints(1)
       .setRequired(true);
 });
 Logger.log('Formulär skapat: ' + form.getEditUrl());

}


Alternativ prompt för enbart JSON

Du är lärare i historia och dessutom specialist på programmering och att flytta information mellan olika system med hjälp av JSON. Du ska skapa 15 frågor utifrån den {TEXT} jag ger dig. Frågorna ska besvaras av elever som är 12 år gamla och anpassas efter deras ålder. Varje fråga ska ha fyra olika alternativ men bara det första alternativet ska vara rätt. Frågorna ska formateras så här: { fråga: "Frågetext?", svar: ["Rätt alternativ", "Fel alternativ", "Fel alternativ", "Fel alternativ"] }, {TEXT}Inkopieradtext {/TEXT}


Kör skriptet och skapa formuläret

Det trixiga är att få det hela att fungera utan felmeddelanden.

1 Se till så att du är inloggad på ditt lärarkonto i Google, samma domän som eleverna använder
2 gå till https://script.new så skapas automatiskt ett nytt script
3 Radera all kod i kodfönstret, och klistra sedan in din egen kod
4 Byt namn från "Namnlöst projekt" till något du känner igen
5 Spara projektet genom att klicka på ikonen av en diskett överst. Håller du muspekaren över står det "Spara projekt på drive".
6 Klicka på "Kör", det är knappen med en pil år höger överst med texten "Kör" bredvid. Då borde du få upp en blå knapp om att "Granska behörigheter". Klicka på den och välj ditt eget konto. Klicka "fortsätt"
7 Har allt gått som det ska har ett nytt formulär skapats. Det hamnar som standard i "Min enhet". Rotbiblioteket i din drive.

Fel?

Står det Varning Projektet behöver åtkomst till ditt Google-konto för att kunna köras. Försök igen och tillåt detta den här gången. kan du försöka med att köra "Kör"-knappen igen. När ditt Google-konto syns igen klickar du på "Avancerat" längst ner i rutan. Klicka sedan på "Gå till [ditt projektnamn] (osäkert)". Det betyder inte att det är farligt, bara att du själv har skrivit koden. Godkänn scriptet genom att klicka på "Tillåt (Allow)". och fortsätt, så bör ditt formulär skapas.
Står det: The OAuth client was deleted. Om du är en utvecklare av Skapa form med frågor läser du felinformationen. Fel 401: deleted_client gör du om alltihop i ett nytt scriptfönster.


Fixa till

Frågorna har inga nummer, och det är bra. Du kanske vill radera en fråga mitt i. Eller så vill du att frågorna ska ha olika platser i formuläret om eleverna sitter bredvid varandra. Vill du ha nummer fyller du i det efteråt.

Alla frågorna markeras automatiskt som att de kräver ett svar, annars går inte formuläret att lämna in. Det är korkat, klicka bort det.

Samtidigt som du klickar bort att svaren är obligatoriska kan du klicka i att de olika svarsalternativen randomiseras. Det gör du i menyn nere till höger i frågan. Annars är alltid första svaret rätt.

Gå in i inställningarna och kontrollera när eleven ska få tillbaka sitt svar, direkt eller efter att du rättat.

Har ni en kommunal licens ska även kryssrutan med alternativet att enbart de med verifierade e-mail adresser får svara klickas i. Annars vet du inte vem som svarat på frågorna.


Andra frågetyper

Som standard skaps frågorna som om det bara finns ett svar. och det är bra eftersom de är så lätta att ändra.

Vill du ha kort- eller lång text är det bara att ändra frågetyp i formuläret. Det enda som händer är att alternativen försvinner.

Vill du ha mer än ett alternativ rätt byter du frågetyp till kryssrutor, Alla alternativen behålls.

Svar i tabellform får du dock fixa själv. Alternativen blir cellerna i X-led.


Enbart textrutor

Vill du istället enbart ha textrutor med kort svar (Short answer) kan du använda följande kod som JSON. Det finns tyvärr ingen metod att skriva in rätt svar till textrutan, för automatisk rättning, så det får du göra själv.

Prompt

Du är lärare i historia. Du ska skapa 15 frågor utifrån den {TEXT} jag ger dig. Frågorna ska besvaras av elever som är 12 år gamla och anpassas efter deras ålder. Varje fråga ska bara ha ett enda ord som svar och kunna besvaras genom ett short answer i ett Google form. Skapa ett JSON för frågorna så att de kan läsas in av denna funktion:

 // Lägg till frågorna i formuläret
 questionList.forEach((question) => {
   const item = form.addTextItem();
   item.setTitle(question[0]);
 });

Skapa sedan ett Google Apps Script som skapar ett nytt formulär och skapar alla frågorna inuti formuläret utifrån denna JSON.

{TEXT}Inkopieradtext {/TEXT}




Resultatet, med JSON och funktion som skapar frågorna, blir som följer:

 // JSON med frågor
 const questionList = [
   ["Vad betyder ordet Mesopotamien på grekiska?"],
   ["Vilka två floder låg Mesopotamien mellan?"],
   ["Vilken flod, förutom Tigris, rann genom Mesopotamien?"],
   ["Vilken form hade den bördiga halvmånen?"],
   ["Vilken typ av naturresurs gjorde marken bördig?"],
   ["Vilket folk skapade den första civilisationen i Mesopotamien?"],
   ["Vad kallades städer som fungerade som små riken?"],
   ["Vilken var den största sumeriska stadsstaten?"],
   ["Vad skrev sumererna med spetsiga vassrör på?"],
   ["Vad kallades sumerernas skriftspråk?"],
   ["Vilken siffra byggde sumerernas talsystem på?"],
   ["Vad hette den sumeriske kungen som blev hjälte i en berättelse?"],
   ["Vad hette den sumeriska prästinnan som var världens första kända författare?"],
   ["Vilken gudinna skrev Enheduanna dikter till?"],
   ["Vilket språk med alfabet användes senare i Mesopotamien?"]
 ];
 // Lägg till frågorna i formuläret
 questionList.forEach((question) => {
   const item = form.addTextItem();
   item.setTitle(question[0]);
 });


Det går att använda bägge funktionerna i samma script för att skapa ett enda formulär med både urvalsfrågor och textfrågor.


Prompt för både urval och text

Om du nu bara ska skapa JSON listorna i den existerande funktionen kan du skriva:

Du är lärare i historia och dessutom specialist på programmering och att flytta information mellan olika system med hjälp av JSON. Du ska skapa 15 frågor utifrån den {TEXT} jag ger dig. Frågorna ska besvaras av elever som är 12 år gamla och anpassas efter deras ålder. Varje fråga ska ha fyra olika alternativ men bara det första alternativet ska vara rätt. Frågorna ska formateras så här: { fråga: "Frågetext?", svar: ["Rätt alternativ", "Fel alternativ", "Fel alternativ", "Fel alternativ"] }, Du ska också skapa femton frågor ur samma {TEXT}. Varje fråga ska bara ha ett enda ord som svar och kunna besvaras genom ett short answer i ett Google form. Skapa ett JSON för de frågorna med rätt svar som en kommentar bakom varje post, så här: ["Fråga?"], //svar

{TEXT}Inkopieradtext {/TEXT}