从chrome扩展程序发送chrome有效URL到Google应用脚本(网络应用)

时间:2018-10-19 17:14:08

标签: javascript google-apps-script google-chrome-extension google-sheets

我想每隔15秒从chrome扩展程序向google应用程序脚本(部署为网络应用程序)发送当前活动标签网址,以将其保存在Google工作表中。

这是Chrome扩展程序的代码-background.js:

function setCell(param){

 var u = 'https://script.google.com/macros/s/AKf../exec';  

var xml = new XMLHttpRequest();
xml.open('GET', u, true);


xml.send(param);
}


 function setCell(param){

  var u = 'https://script.google.com/macros/s/AKf..FygM/exec';  

  var xml = new XMLHttpRequest();
  xml.open('POST', u, true);         
  xml.send(param);
  }

  chrome.tabs.onUpdated.addListener( function( tabId,  changeInfo,  tab) {
  var param = tab.url;

  if (tab.status == 'complete'){
  setCell(param);
  }
  chrome.extension.getBackgroundPage().console.log( param );                                                

  })

这是网络应用程序的代码(Google应用程序脚本):

     /* 
1. Naming convention -- YYYY-MM-DD-Username
2. Chrome extension to capture url every time Active Tab changes.
*/

var email = Session.getActiveUser().getEmail();
var userId = email.match(/^([^@]*)@/)[1];         // to get usename
var f_id= null;
var sheet= null;
var params= null;


function doGet(e) {
 var url_f = e.parameter.value;

      assign_1(url_f);

  Logger.log(url_f +" "+ 11); 
//  return HtmlService.createHtmlOutput(url_f + " -- updated");
}

function doPost(e) {
 var url_f = e.parameter.value;

      assign_1(url_f);                                        //working

  Logger.log(url_f +" "+ 11); 
 // return HtmlService.createHtmlOutput(url_f + " -- updated");
}



function assign_1(url_f) {                                                                   

  var files_present = DriveApp.getFilesByName(date_Format(new Date())+"- 
  "+userId)

  while (files_present.hasNext()) {
        var file = files_present.next();
        var f_name=file.getName();
        var f_id= file.getId();

    Logger.log(file.getName() +" "+ 1);                                                  
}


  if (!f_name){                                                                         
   creat_Ssheet();
  }
  else{
    open_Ssheet();
  }


  function creat_Ssheet(){
    var ss= SpreadsheetApp.create(date_Format(new Date())+"-"+userId);                  // creating spreadsheet
    // Saving speadsheet into specific folder
   folder = DriveApp.getFolderById("1LrUHlZGrm_wxxPHTiU_4C67xLqhR0STl");                 // change ID accordingly
   var temp = DriveApp.getFileById(ss.getId());
   folder.addFile(temp)
   DriveApp.getRootFolder().removeFile(temp)
   var sheet = ss.getActiveSheet();
   sheet_format(sheet);
   sheet_Update(sheet);

    Logger.log(sheet.getName()+" --created "+2);   //testing
  }

  function open_Ssheet(){
    var ss = SpreadsheetApp.openById(f_id);
          SpreadsheetApp.setActiveSpreadsheet(ss);
    var sheet= ss.getActiveSheet();
    sheet_format(sheet);
    sheet_Update(sheet);

      Logger.log(sheet.getName()+" --selected "+ 3);                                     //testing
  }

  function sheet_format(sheet){
  sheet.setFrozenRows(1);
  var values = [ ["Sr. No.", "URL", "Time", "Comment"] ];
  var range = sheet.getRange("A1:D1");
  range.setValues(values);
  range.setBackground('yellow');

    var lc = sheet.getLastColumn();
  var r= sheet.getRange(1, 1,1000,lc);
  var set=r.setHorizontalAlignment("center");

  Logger.log(4);                                                                       //testing
  }

  function sheet_Update(sheet){
    var d = new Date();
    var time = d.toLocaleTimeString();
    var s_n= sheet.getLastRow();

    sheet.appendRow([s_n, url_f ,time]);                                                //["Sr. No.", "URL" "Time", "Comment"]                       



  }


  function date_Format(date) {                                                             //Date formation
    var d = new Date(date);
    var month = '' + (d.getMonth() + 1);
    var day = '' + d.getDate();
    var year = d.getFullYear();
    var time = d.toLocaleTimeString();

    if (month.length < 2) month = '0' + month;
    if (day.length < 2) day = '0' + day;

    return [year, month, day].join('-');
}

}

每当打开新标签页时,获取多个“未定义”变量来代替URL。

manifest.json

 {
 "manifest_version": 2,

 "name": "Assign_1",
 "description": "Capture username, URL and stores it into Google sheet.",
 "version": "1.0",
 "icons": { "16": "icons/assign1_logo_16.png",
         "48": "icons/assign1_logo_48.png",
         "128": "icons/assign1_logo_128.png" },

"browser_action": {
"default_icon": "icons/assign1_logo_16.png",
"default_popup": "popup.html"
},
"permissions": [
  "tabs",
   "activeTab",
   "https://script.google.com/",
    "http://*/*",
    "https://*/*"
],

"background": {
"persistent": false,
"scripts": ["background.js"],

"oauthScopes": [                                                            
// not clear
"https://www.googleapis.com/auth/drive",
"https://www.googleapis.com/auth/spreadsheets"
 ]
 },

 "content_scripts": [
 {
 "matches": ["<all_urls>"],
 "js": ["content.js"]
 }
 ]}

here is the snapshot of output.

请为我提供一种获取有效URL并将其存储在Google表格中的解决方案。

0 个答案:

没有答案
相关问题