My Codeforces Journal ist eine Chrome-Erweiterung, die Codeforces-Benutzern hilft, die von ihnen gelösten Probleme zu verfolgen. Mit nur einem Klick speichert die Erweiterung die Details des aktuellen Problems in einer Google-Tabelle, die der Benutzer verknüpft hat. Dies macht es einfach, ein persönliches Protokoll der im Laufe der Zeit gelösten Probleme zu führen.
Möchten Sie zu dieser Chrom-Erweiterung beitragen? Gehen Sie zu diesem Repo: My Codeforces Journal Development
Ein-Klick-Speicherung : Speichern Sie das aktuelle Codeforces-Problem, das Sie gelöst haben, mit einem einzigen Klick.
Tabellenkalkulationsintegration : Verknüpfen Sie Ihre eigene Google-Tabelle, um Probleme in einem für Sie passenden Format zu speichern und zu organisieren.
Erfasste Problemdetails : Die Erweiterung speichert wichtige Informationen wie Problem-URL, Problemname und Problembewertung.
Sehen Sie sich dieses YouTube-Video an: Erste Schritte mit My Codeforces Journal
Bevor Sie die Erweiterung verwenden können, stellen Sie sicher, dass Sie über Folgendes verfügen:
Eine Google-Tabelle, in der die Probleme gespeichert werden.
Die Chrome-Erweiterung „Codeforces Journal“ ist installiert und für den Zugriff auf Ihre Tabelle berechtigt.
Lesen Sie am Ende unbedingt den ABSCHNITT HÄUFIGE FEHLER.
Laden Sie den dist
-Ordner über den folgenden Link herunter: My Codeforces Journal
Öffnen Sie Chrome und gehen Sie zu chrome://extensions/
.
Aktivieren Sie den Entwicklermodus in der oberen rechten Ecke.
Klicken Sie auf Entpackt laden und wählen Sie den Ordner aus, in dem der dist
-Ordner gespeichert ist.
Die Erweiterung sollte jetzt auf Ihrer Erweiterungsseite sichtbar sein.
Stecken Sie die Erweiterung zur einfacheren Verwendung in die Symbolleiste.
Erstellen Sie eine neue Google-Tabelle.
Benennen Sie die Tabelle nach Ihren Wünschen.
Klicken Sie auf das Menü „Erweiterungen“ und dann auf „App-Skript“.
Klicken Sie auf „Ohne Titel“ und benennen Sie diese App-Skriptdatei so um, dass sie mit dem Namen Ihrer Tabelle übereinstimmt.
Kopieren Sie den Code unten, fügen Sie ihn in den App Script-Editor ein und speichern Sie ihn durch Drücken der Tastenkombination cmd + S
/ ctrl + S
Klicken Sie oben rechts auf die Schaltfläche „Bereitstellen“ und wählen Sie „Neue Bereitstellung“.
Fügen Sie eine Beschreibung Ihrer Wahl hinzu (könnte mit dem Namen Ihrer Tabellenkalkulation identisch sein).
Setzen Sie „Wer hat Zugriff“ auf „Jeder“.
Klicken Sie auf „Bereitstellen“ und autorisieren Sie das App-Skript.
Nachdem Sie auf „Autorisieren“ geklickt haben, wählen Sie das Google-Konto aus, das Sie zum Erstellen der Tabelle verwendet haben. Anschließend wird die Meldung „Google hat diese App nicht überprüft“ angezeigt
Klicken Sie unten auf „Erweitert“ und
Klicken Sie auf den Namen des angezeigten AppScript-Projekts und dann auf Zulassen
Stellen Sie das AppScript-Projekt erneut bereit, um sicherzustellen, dass Ihr Projekt ordnungsgemäß autorisiert wurde
Kopieren Sie die Skript-URL, da dies Ihre AppScript-URL ist, und speichern Sie sie zur späteren Verwendung in der Erweiterung.
Klicken Sie erneut auf die Schaltfläche „Bereitstellen“.
Wählen Sie „Bereitstellungen verwalten“ und dann wird ein Modal angezeigt
Klicken Sie auf die Schaltfläche „Bearbeiten“ (das Stiftsymbol). Nun wird die Schaltfläche „Bereitstellen“ unten aktiv
Klicken Sie auf Bereitstellen
Wenn bei der Autorisierung ein Fehler auftritt, wird Ihnen erneut die Schaltfläche „Autorisieren“ angezeigt oder Sie werden aufgefordert, die Skript-URL zu kopieren
function doPost(e) { try { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; // Die eingehenden Anforderungsdaten analysieren var data; Versuchen Sie es mit { data = JSON.parse(e.postData.contents); } Catch (parseError) { return ContentService.createTextOutput('{"status":error","message":Ungültiges JSON-Format."}').setMimeType(ContentService.MimeType.TEXT); } // Prüfen, ob die Anfrage auf ein bestehendes Problem prüfen soll if (data.action === "checkProblem") { const problemNameColumn = sheet .getRange("B2:B" + sheet.getLastRow()) .getValues() .Wohnung(); const problemExists = problemNameColumn.includes(data.problemName); return ContentService.createTextOutput(JSON.stringify({ status: "success", exist: problemExists })).setMimeType(ContentService.MimeType.JSON); } // (Ihre vorhandene ‚initialize‘- und ‚addProblem‘-Logik hier) if (data.action === „initialize“) { var headers = [“Rating“, „Problem“, „Status“, „Remarks“, „ Datum“, „Imbiss“, „Themen“]; if (sheet.getLastRow() === 0 || sheet.getRange("A1").getValue() === "") { // Die Initialisierungslogik bleibt gleich sheet.getRange("A1:G1"). verschmelzen(); sheet.getRange("A1").setValue("Codeforces Sheet"); sheet.getRange("A1").setFontSize(13).setHorizontalAlignment("center").setBackground("#ffd966"); sheet.getRange("A2:G2").setValues([headers]); sheet.getRange("A2:G2").setFontSize(12).setHorizontalAlignment("center").setBackground("#93c47d"); sheet.setColumnWidth(1, 75); sheet.setColumnWidth(2, 185); sheet.setColumnWidth(3, 155); sheet.setColumnWidth(4, 290); sheet.setColumnWidth(5, 80); sheet.setColumnWidth(6, 530); sheet.setColumnWidth(7, 190); sheet.getRange("A2:G1000").setVerticalAlignment("middle"); sheet.getRange("C2:C1000").setWrap(true); sheet.getRange("D2:D1000").setWrap(true); sheet.getRange("F2:F1000").setWrap(true); sheet.getRange("G2:G1000").setWrap(true); sheet.getRange("A2:A1000").setHorizontalAlignment("center"); sheet.getRange("B2:B1000").setHorizontalAlignment("center"); sheet.getRange("E2:E1000").setHorizontalAlignment("center"); sheet.getRange("G2:G1000").setHorizontalAlignment("center"); var newDate = new Date(); sheet.getRange("E3:E1000").setNumberFormat("dd-mmm-yyyy"); sheet.insertRowBefore(3); sheet .getRange("A3:G3") .setValues([ [9999, "Problem9999Z", "Gelöst", "Konnte meine Intuition nicht umsetzen", newDate, "Ich habe verstanden, wie Rekursion funktioniert", "Rekursion, DP, Graph" ], ]); return ContentService.createTextOutput( '{"status": "success", "message": Mit Formatierung, benutzerdefinierten Spaltenbreiten und hinzugefügter Zeile initialisierte Kopfzeilen. "}' ).setMimeType(ContentService.MimeType.TEXT); } else { return ContentService.createTextOutput('{"status": "success", "message": "Header sind bereits vorhanden."}').setMimeType(ContentService.MimeType.TEXT); } } else if (data.action === "addProblem") { try { const newRow = [data.problemRating, data.problemName, data.problemStatus, data.remarks, data.dateSolved, data.takeaways, data.problemTopics] ; const lastRow = sheet.getLastRow() + 1; sheet.appendRow(newRow); const problemNameCell = sheet.getRange(lastRow, 2); if (data.problemUrl) { problemNameCell.setValue(data.problemName).setFormula(`=HYPERLINK("${data.problemUrl}", "${data.problemName}")`); } return ContentService.createTextOutput('{"status"success", "message": Problemdaten mit Hyperlink hinzugefügt."}').setMimeType( ContentService.MimeType.JSON ); } Catch (addError) { return ContentService.createTextOutput('{"status"error","message"Problemdaten konnten nicht hinzugefügt werden."}').setMimeType( ContentService.MimeType.TEXT ); } } } catch (error) { return ContentService.createTextOutput('{"status":"error","message":"' + error.message + '"}').setMimeType(ContentService.MimeType.TEXT); }}
Öffnen Sie eine beliebige Codeforces-Problemseite.
Wenn Sie das Problem gelöst haben, klicken Sie auf das Erweiterungssymbol „My Codeforces Journal“ und dann auf „Problem hinzufügen“.
Füllen Sie das Formular aus und klicken Sie auf „Senden“.
Die Problemdetails werden automatisch in der verbundenen Tabelle gespeichert.
Diese Erweiterung erfordert die folgenden Berechtigungen:
Aktiver Tab : Um beim Speichern des Problems auf die URL des aktuellen Tabs zuzugreifen.
Speicher : Zum Speichern der Details Ihrer verbundenen Tabellenkalkulation.
Scripting : Um JavaScript auszuführen
Ursache : Dies tritt normalerweise auf, wenn eine nicht vorhandene Codeforces-ID übermittelt wurde.
Lösung : Überprüfen Sie die ID noch einmal und stellen Sie sicher, dass sie korrekt ist.
Ursache : Dieser Fehler bedeutet im Allgemeinen, dass die angegebene AppScript-URL falsch ist.
Lösung : Überprüfen Sie die URL und verwenden Sie die richtige AppScript-URL.
Zusätzlicher Tipp : Dieser Fehler kann auch auftreten, wenn Ihr AppScript-Projekt nicht ordnungsgemäß autorisiert wurde. Um eine ordnungsgemäße Autorisierung sicherzustellen:
Stellen Sie Ihr AppScript-Projekt während der Tabelleneinrichtung zweimal bereit; Die zweite Bereitstellung hilft dabei, zu bestätigen, dass das AppScript-Projekt vollständig autorisiert ist.
Ursache : Dies tritt auf, wenn das Problem, das Sie hinzufügen möchten, in Ihren letzten 40 Übermittlungen bei Codeforces nicht gelöst wurde.
Lösung : Stellen Sie sicher, dass Sie das Problem kürzlich gelöst haben. Wenn nicht, versuchen Sie es mit Codeforces, bevor Sie es der Tabelle hinzufügen.