Action
Rewrite with Gemini
Posted by slyfox,
Last update
3 days ago
- Unlisted
Steps
-
script
// get your input selected text, and store range for later const selection = editor.getSelectedText() const [st, len] = editor.getSelectedRange() // 1. DEFINITIONS // We use v1beta because gemini-3-pro-preview is not yet in v1 (stable) const model = "gemini-3-pro-preview" const apiKey = "YOUT_API_KEY" // OR use Credential object below if you have one saved //const credential = Credential.create("Google Gemini", "Google AI API Key"); //const apiKey = credential.getValue("password"); let f = () => { let instruction = `Revise the following text so it is concise, clear, and informative, suitable for inclusion in a psychological report. Tone and Style: • Semi-formal and professional • Follow Canadian English spelling and conventions Requirements: • Preserve the abbreviation “MVA” exactly as written • Eliminate redundancy and use precise language • Prioritize readability and clarity for a professional audience Output: Provide the revised text only. Do not include explanations or commentary. Input:` // 2. BUILD PROMPT let chatPrompt = `${instruction} "${selection}"` // 3. SETUP RAW HTTP REQUEST (Bypassing GoogleAI helper) // This ensures we hit the 'v1beta' endpoint required for preview models let http = HTTP.create(); let response = http.request({ "url": `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey}`, "method": "POST", "data": { "contents": [ { "parts": [{"text": chatPrompt}] } ] }, "headers": { "Content-Type": "application/json" } }); // 4. ERROR HANDLING if (response.statusCode != 200) { console.log("Error: " + response.statusCode); console.log(response.responseText); context.fail(); return false; } // 5. PARSE RESULT let result = JSON.parse(response.responseText); let answer = result.candidates[0].content.parts[0].text; if (!answer || answer.length == 0) { console.log("Gemini returned an empty response.") return false } // 6. UPDATE EDITOR editor.setSelectedText(answer) editor.setSelectedRange(st, answer.length) return true } if (!f()) { context.fail() }
Options
-
After Success Default Notification Info Log Level Info
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.