/** * Created from copy: 2014.18.08.12.01.AM * GoogleAddMessagesForXpagesJavaAgent | WorksheetsAddMessagesJavaAgent.java * Insert Row(s) to Worksheets in specific Spreadsheet, housed on Google Drive */ //... //Google imports import com.google.gdata.client.spreadsheet.*; import com.google.gdata.data.spreadsheet.*; import com.google.gdata.util.*; //... //Java imports import java.io.IOException; import java.net.*; import java.util.*; //... //Lotus Domino imports import lotus.domino.AgentBase; import lotus.domino.AgentContext; import lotus.domino.Document; import lotus.domino.Session; import lotus.domino.View; import lotus.domino.local.Database; /** * @author Dököll Solutions, Inc. * @version 2014.18.08.12.01.AM * */ public class WorksheetsAddMessagesJavaAgent extends AgentBase { //declare and initialise variables for Worksheets data static String GOOGLE_MSG_SHEET_VIEW = "GoogleMessageWorksheetsDataView"; private String UserName = "username"; private String RoleID = "roleid"; private String VideoID = "videoid"; private String EmbedCode = "embedcode"; private String MessageBox = "messages"; private String PageID = "pageid"; private String UserIP = "userip"; private String DateCreated = "datecreated"; // 2014.05.18.10.39.PM public void NotesMain() { try { Session session = getSession(); // load info to console for debugging purposes // load agentContext AgentContext agentContext = session.getAgentContext(); // ... // find database based on session found Database database = (Database) agentContext.getCurrentDatabase(); // Find view in question according to current database View view = database.getView(GOOGLE_MSG_SHEET_VIEW); // declare document variables Document currDoc; Document tempDoc; // grab first doc currDoc = view.getFirstDocument(); while (currDoc != null) { // prepare values to plug into Google Spredsheet/Worksheet(s) String SubjectUserName = currDoc .getItemValueString("subjectUserName"); String SubjectUserRole = currDoc .getItemValueString("subjectUserRole"); String SubjectVideoID = currDoc.getItemValueString("subjectVideoID"); String SubjectEmbedCode = currDoc .getItemValueString("subjectEmbedCode"); String SubjectMessages = currDoc .getItemValueString("subjectMessageBox"); String SubjectPageID = currDoc .getItemValueString("PageID"); String SubjectUserIP = currDoc .getItemValueString("UserIP"); String SubjectDateCreated = currDoc .getItemValueString("subjectDateCreated"); //TODO: Get a Google Drive account before running this code // Add a Spreadsheet, and a new Worksheet //... // grab Google Creds String USERNAME = "yourgmailaccount@gmail.com"; String PASSWORD = "yourgmailpassword"; SpreadsheetService service = new SpreadsheetService( "CompanyMessagesSpreasheets"); try { service.setUserCredentials(USERNAME, PASSWORD); } catch (AuthenticationException e) { // TODO Auto-generated catch block e.printStackTrace(); } // TODO: Authorize the service object for a specific user (see // other sections) // Define the URL to request. This should never change. URL SPREADSHEET_FEED_URL = null; try { SPREADSHEET_FEED_URL = new URL( "https://spreadsheets.google.com/feeds/spreadsheets/private/full"); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { // Make a request to the API and get all spreadsheets. SpreadsheetFeed feed = (SpreadsheetFeed) service.getFeed( SPREADSHEET_FEED_URL, SpreadsheetFeed.class); List<SpreadsheetEntry> spreadsheets = feed.getEntries(); if (spreadsheets.size() == 0) { // TODO: There were no spreadsheets, act accordingly. } // TODO: Choose a spreadsheet more intelligently based on // your // app's needs. SpreadsheetEntry spreadsheet = spreadsheets.get(0); System.out.println(spreadsheet.getTitle().getPlainText()); // Get the first worksheet of the first spreadsheet. // TODO: Choose a worksheet more intelligently based on your // app's needs. WorksheetFeed worksheetFeed = service.getFeed(spreadsheet .getWorksheetFeedUrl(), WorksheetFeed.class); List<WorksheetEntry> worksheets = worksheetFeed .getEntries(); WorksheetEntry worksheet = worksheets.get(0); // Fetch the list feed of the worksheet. URL listFeedUrl = worksheet.getListFeedUrl(); ListFeed listFeed = (ListFeed) service.getFeed(listFeedUrl, ListFeed.class); // Create a local representation of the new row, based on declared variables... //... ListEntry row = new ListEntry(); row.getCustomElements().setValueLocal(UserName, SubjectUserName); row.getCustomElements().setValueLocal(RoleID, SubjectUserRole); row.getCustomElements().setValueLocal(VideoID, SubjectVideoID); row.getCustomElements() .setValueLocal(EmbedCode, SubjectEmbedCode); row.getCustomElements() .setValueLocal(MessageBox, SubjectMessages); //... row.getCustomElements() .setValueLocal(PageID, SubjectPageID); row.getCustomElements() .setValueLocal(UserIP, SubjectUserIP); row.getCustomElements() .setValueLocal(DateCreated, SubjectDateCreated); // Send the new row to the API for insertion. row = (ListEntry) service.insert(listFeedUrl, row); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ServiceException e) { // TODO Auto-generated catch block e.printStackTrace(); } // Get next document tempDoc = view.getNextDocument(currDoc); // recycle currDoc currDoc.recycle(); // set currDoc to tempDoc currDoc = tempDoc; session.recycle(); } } catch (Exception e) { e.printStackTrace(); } } }