共享伺服器側宏的製作方法
2023-06-01 22:32:01 1
專利名稱:共享伺服器側宏的製作方法
技術領域:
本文獻涉及電子內容的基於網絡的遞送。
背景技術:
宏是如下指令集,可以在一個或者多個計算機應用內執行該指令集以提供與那些應用的增強和自動的交互,其中宏的至少一部分代表原本可以由應用的用戶人工執行的步驟。例如,可以編寫宏以便根據電子表格應用中的某些數計算值並且將該值複製到臺式計算機上的有關文字處理應用。用戶可以向宏分配「熱鍵」組合,從而使得用戶可以簡單地通過按壓熱鍵組合來容易地運行宏。作為另一示例,也可以編寫宏以使某些電子消息(例如, 來自配偶、客戶或者老闆的電子消息)在重要性上有所提高,從而使得它們可以由計算設備的用戶更容易地看見。一種熟悉的基於宏的系統是用於MICROSOFT OFFICE生產率套件的 Visual Basic for Applications。
發明內容
本文獻討論用於在託管計算環境(常俗稱為「雲」)中創建和使用宏的系統和技術。可以存儲並且從宏伺服器子系統而不是從客戶端設備執行宏,因此允許在用戶之間容易地共享宏,因為所有合格用戶可以從任何位置訪問宏,只要他們可以接入網絡並且可以提供他們的證書。此外,宏可以容易地訪問多個應用和服務(包括提供關於各種用戶的位置(如例如從他們的行動裝置上的GPS確定)的信息的服務、提供新聞和天氣訂閱的服務以及其他此類服務。應用可以廣泛變化並且可以包括電子郵件、生產率應用(諸如電子表格和文字處理器)、映射應用以及可以在單個網頁(該網頁可以由用戶訪問並且甚至由用戶開發以從宏提供定製輸出)上一起呈現的各種應用的混搭(mash-up)。可以從標準web 瀏覽器訪問系統,並且該系統可以提供宏記錄,其中用戶調用宏記錄器並且該記錄器追蹤用戶對計算機的動作並且將那些動作轉換成宏代碼,從而使得可以在用戶運行宏時的以後時間自動重複該動作。可以從甚至在用戶未與由特定宏尋址的應用交互時發生的事件調用特定宏。具體而言,當在伺服器子系統上存儲和執行宏時,可以建立伺服器子系統以監視整個系統中的涉及宏的特定事件。此類事件繼而可以觸發對宏的調用,並且宏可以在伺服器子系統上執行。宏可以訪問系統上的服務或者第三方服務。系統上的服務可以授予對與向系統註冊的特定用戶對應的數據存儲庫(data store)的訪問。例如,可以響應於進入用戶的帳戶中的電子郵件消息來調用宏,並且該宏轉而可以將來自消息的信息複製到向用戶的帳戶分配的電子表格(例如,從而使得用戶可以自動編譯如下電子表格,該電子表格示出來自所有他們的傳入消息的主題行)中。第三方服務可以包括SOAP服務或者其他如下類似服務,可以從與提供服務的域分離的域訪問這些類似服務,並且這些類似服務提供用於通過網際網路共享信息的公知機制。例如,第三方服務提供者可以編譯最新天氣數據並且可以在請求時使數據可用於其他服務。在第一方面中,一種計算機實現的方法管理計算機宏。該方法包括在網際網路可訪問的託管計算機系統中的位置存儲用於宏的代碼。該方法還包括從在與該託管計算機遠離的客戶端計算機上運行的應用接收對執行該宏的請求,在該託管計算機系統上執行該宏,以及向在該客戶端計算機上運行的該應用提供執行該宏的結果。可以與該宏被編程為對其操作的文檔分開存儲和訪問用於該宏的該代碼。實現方式可以包括以下特徵中的任何、所有特徵或者不包括以下特徵。該方法還可以包括將該宏與該託管計算機系統的註冊用戶相關聯,以及根據由該註冊用戶標識的訪問限制使該宏可用於該託管計算機系統的其他用戶。該訪問限制可以由該託管計算機系統將該註冊用戶分配到的一個或者多個分組進行定義。該方法還可以包括從在與該託管計算機遠離的多個不同客戶端計算機上運行的多個應用接收對執行該宏的請求,從該位置針對每個該請求在該託管計算機系統上自動執行該宏,以及響應於執行該宏向該多個應用中的每個相應應用提供執行該宏的結果。該多個應用可以對應於單個帳戶持有者。該多個應用可以對應於多個不同帳戶持有者。執行該宏可以包括對由該託管計算機系統提供的多個不同託管服務進行調用。執行該宏可以包括對由獨立於該託管計算機系統的第三方信息提供者提供的web服務進行調用。此外,該方法還可以包括將由在該託管計算機系統上運行的第一應用生成的信息轉譯成不同格式,並且向在該託管計算機系統上運行的第二應用提供該經轉譯的信息。 該方法也可以包括向針對向該託管計算機系統註冊的多個不同用戶的多個不同帳戶提供執行該宏的結果。可以響應於該客戶端計算機上的瀏覽器加載具有指針的網頁來接收該請求,該指針指向該託管計算機系統中的宏執行子系統上的JavMcript宏。在另一實現方式中,一種用於在託管計算機系統上執行宏的計算機實現的系統包括可從該託管計算機系統操作的多個託管應用、宏數據存儲庫和計算機伺服器。該宏數據存儲庫存儲多個宏,每個宏分配給該託管計算機系統上的用戶帳戶並且每個宏定義將由該多個託管應用中的至少一個託管應用執行的一系列動作。定義對該多個宏的訪問以便標識用戶帳戶,該系統將代表這些用戶帳戶執行該多個宏中的每個宏。該計算機伺服器被編程為運行腳本管理器,該腳本管理器響應於執行請求來訪問宏並且通過從用戶帳戶有權訪問的一個或者多個網絡可訪問服務收集信息來執行該宏。實現方式可以包括以下特徵中的任何、所有特徵或者不包括以下特徵。可以從代表除了將存儲的宏分配到的用戶帳戶之外的一個或者多個用戶帳戶操作的應用訪問該宏。 腳本管理器可以被編程為向標識為有權訪問該宏中的每個特定宏的用戶帳戶有選擇地允許對該宏的訪問。該系統還可以包括由與該託管計算機系統的運營商不同的組織運營的一個或者多個託管服務,其中每個託管服務可響應於宏的調用來訪問以在執行該宏期間向該宏提供信息。該系統也可以包括用於向該託管計算機系統的用戶遞送的網頁代碼,該網頁代碼包括用於調用該多個宏之一的代碼。每個該宏可以經由用於向該數據存儲庫公布該宏的用戶的帳戶的唯一用戶標識符分配給用戶帳戶。在一些方面中,該系統也包括包裹服務管理器,用於在宏代碼周圍提供安全包裹器,以根據由用戶標識的訪問允許或者限制來控制對與該用戶對應的資源的訪問。安全包裹器可以被布置成生成用於該用戶的對話框,該對話框被布置成在該宏首次運行時從該用戶接收與將向該宏提供的訪問級別有關的輸入。在另一實現方式中,一種計算機實現的系統在託管計算機系統上執行宏。該系統包括多個託管應用,可從該託管計算機系統操作,宏數據存儲庫,存儲多個宏,每個宏分配給該託管計算機系統上的用戶帳戶並且每個宏定義將由該多個託管應用中的至少一個託管應用執行的一系列動作,以及用於執行宏以實現該多個託管應用的一個或者多個實例化中的改變的裝置。在附圖和以下描述中闡述一個或者多個實施方式的細節。從說明書和附圖中以及從權利要求中,其他特徵和優點將變得明顯。
圖1是示出了在託管計算系統中的宏操作的概念圖。圖2是能夠操作共享宏的託管計算機系統的示意圖。圖3是用於在託管計算系統上執行宏的過程的流程圖。圖4A是用於執行從在網頁上運行的應用調用的宏的過程的流程圖。圖4B是用於在託管系統上記錄並且執行宏的過程的泳道流程圖。圖5示出了用於宏系統中的對象的示例結構。圖6示出了宏構造系統的示例屏幕截圖。圖7示出了可以用來執行在本文獻中討論的動作的通用計算機設備的示例。在各種附圖中的相似標號指示相似單元。
具體實施例方式圖1是示出了在託管計算系統100中的宏操作的概念圖。此類操作可以通過在創建和/或複製宏到其存儲位置的用戶在從他們的臺式計算機、他們的上網本計算機或者從公用可用計算機(諸如網際網路咖啡吧中的計算機)運行應用之時嘗試訪問宏時支持從各種客戶端操作宏來與在客戶端設備上或者在涉及單個客戶端設備的伺服器(例如,經由遠程桌面連接服務或者VPN)上的宏操作形成對照。也可以通過第一用戶定義對宏的如下訪問限制來在用戶之間容易地共享宏,這些訪問限制允許其他用戶(例如,從與初始用戶相同的域訪問系統的用戶)在使用他們自己的應用時運行宏。即使在用戶未在線時(諸如在用戶和用戶的計算機外部的輸入觸發宏執行時)也可以針對該用戶執行宏。另外,當託管系統具有相互有關的多個註冊用戶(例如,他們都為相同企業組織工作)時,在託管系統中運行的宏可以產生跨越應用和/或與多個此類用戶對應的數據存儲庫的複雜工作流程。如前所言,宏可以由外部事件(諸如接收電子郵件消息)觸發。宏可以在與用戶的客戶端系統分離並且與供其他服務或者應用在其上運行的任何子系統分離的宏伺服器子系統上運行。例如,在其他子系統上的服務可以包括供宏訪問以獲得信息的任何服務,包括主系統的內部服務(例如,位置服務和電子郵件服務)和第三方服務(例如,來自商業在線商店或者拍賣站點、天氣站點等)。與系統相關聯的宏伺服器子系統可以允許編寫宏代碼的用戶按照統一和一致方式編寫宏,從而使編程體驗對於終端用戶而言容易。例如,可以針對揭示給終端用戶的諸如操縱電子表格和日曆、提取web內容、發送電子郵件、訪問他們的日曆、轉譯文本等不同服務定義對象模型。可以例如使用Java對象來代表對象模型。每個Java對象可以包裹 (wrap)對底層服務的訪問方法。電子表格和語言轉譯服務可以使用內部直接網絡調用(例如,遠程過程調用),並且web內容提取可以例如使用SOAP或者類似服務。這些服務中的許多服務無需直接揭示給終端用戶。系統100可以通過在底層Java對象周圍創建若干層「包裹器」或者「裝飾器 (decorator) 」來消除使內部服務揭示給終端用戶的風險。例如,系統100可以包括如下配額實施層,該層限制給定服務可以由給定用戶調用的次數。系統100可以包括如下安全層, 該層可以使用基於能力的安全性,從而允許細粒度訪問控制(例如,允許對底層數據的讀取訪問、但是不允許寫入訪問)。系統100也可以包括如下登錄層(logging layer),該層可以捕獲所有用戶調用並且提供對他們的會話的轉錄。當統一地而不是跨越服務特定地應用配額和安全性時,可以減少程式設計師錯誤(並且因而違反安全性)的可能性。系統100可以包括用於管理計算機宏的各種計算機實現的機制,其中在網際網路可訪問的託管計算機系統中的位置存儲用於宏的代碼並且該代碼可操作用於執行以下功能。 響應於諸如從在與託管計算機系統遠離的客戶端計算機上運行的應用接收對執行宏的請求,可以在託管計算機系統上執行宏。例如,宏可以直接在宏管理器或者其通信地耦合的部件內運行。可以向在客戶端計算機上運行的應用(例如,在用戶的計算機上的瀏覽器中運行的電子表格應用)提供執行宏的結果。可以與宏被編程為對其進行操作的文檔分開存儲和訪問在這一情形中用於宏的代碼。例如,儘管代碼可以在託管服務伺服器上執行,但是由宏代碼更新的電子表格可以駐留於用戶的膝上型計算機上或者託管服務的另一如下位置中,在該位置從代表向託管服務註冊的任何數目的用戶運行的任何數目的應用自由指向和訪問宏。在一些實現方式中,每個宏可以與託管計算機系統的註冊用戶相關聯,並且可以根據由註冊用戶標識的訪問限制(或者更具體地,根據在其他用戶的帳戶上運行的應用) 使宏可用於託管計算機系統的其他用戶。例如,「擁有」宏的用戶可以經由被授權使用他的宏的其他用戶的用戶ID或者經由那些用戶所屬的分組標識該其他用戶。在其他情況下,用戶可以提供指向宏的連結或者URL並且包括與運行宏相關聯的某些權限。訪問限制可以由託管計算機系統將註冊用戶分配到的一個或者多個分組進行定義。例如,用戶可以向命名為「我的在線好友」的分組授予宏訪問權並且向該分組(該分組可以代表他的在他的社交網站(例如,FacebooKOrkut等)上標識的「好友」)中的所有人分配權限。在一些實現方式中,可以接收對執行宏的請求,其中請求源於在與託管計算機遠離的多個不同客戶端計算機上運行的多個應用。例如,應用可以生成或者激發如下「事件」, 這些事件在宏的定義中被設計成啟動宏的執行或者在處於等待狀態之後恢復或者繼續宏的執行。系統100可以從該位置針對每個請求在託管計算機系統上自動執行宏。系統100 還可以響應於執行宏來向多個應用中的每個相應應用提供執行宏的結果。在一些實現方式中,多個應用對應於單個帳戶持有者。例如,請求執行宏的每個應用可以接收結果。在一些實現方式中,多個應用對應於多個不同帳戶持有者(例如,系統100的多個註冊用戶)。執行宏可以包括對由託管計算機系統提供的多個不同託管服務進行調用。例如, 宏可以調用日曆服務、聯繫人服務、位置提供服務(例如,表明用戶或者用戶好友的位置的服務)等。備選地或者附加地,執行宏可以包括對由獨立於託管計算機系統(例如,在與託管計算機系統的域不同的域並且由與託管計算機系統的組織不同的組織運營)的第三方信息提供者提供的web服務進行調用。由在託管計算機系統上執行的第一應用生成的信息也可以從第一格式轉譯成第二格式,並且可以向在託管計算機系統上運行的第二應用提供經轉譯的信息。例如,文字處理應用可以按照逗號界定格式創建數據,並且繼而可以向電子表格應用提供該數據以用於粘貼到按照電子表格應用專屬格式的電子表格單元中。也可以向用於向託管計算機系統註冊的多個不同用戶的多個不同帳戶自動提供執行宏的結果。例如,可以向若干計算機系統上的若干用戶提供宏執行結果,以諸如更新每個他們的系統上的共同電子表格單元。在一些實現方式中,響應於客戶端計算機上的瀏覽器加載具有如下指針的網頁來接收對運行宏的請求,該指針指向託管計算機系統中的宏執行子系統上的JavMcript宏。例如,當通過傳遞指向宏的連結或者URL來共享宏時,可以按照連結或者URL的形式提供對執行宏的請求(例如,按照JavMcript或者任何其他相關
語曰)。現在更具體地參照圖1,並且作為用於實施剛剛討論的功能中的一些或者所有功能的示例,系統100包括一個或者多個應用102 (各自有權訪問宏鉤(macro hook) 104,該宏鉤使得在其被訪問時執行宏)、一個或者多個外部事件105、宏伺服器子系統106、社交網絡 108、位置服務110和宏代碼112。應用102可以包括任何適用的諸如電子郵件應用、電子表格應用、文字處理應用、 照片共享應用、演示包、財務規劃應用等如下應用,用戶可以使該應用運行或者執行。在一些情況下,用戶可以通過選擇運行的應用(諸如通過雙擊桌面上或者應用的下拉列表中的應用名稱)來顯式啟動該應用。諸如在用戶點擊電子郵件附件(例如,文本文件或者電子表格)時或者在用戶點擊未知文件時(任一種都可以諸如基於文件的擴展名或者其他定義的關聯性來自動啟動對與文件相關聯的對應應用的執行)可以隱式啟動其他應用。用戶也可以通過導航到涉及應用(諸如託管應用)的URL來啟動該應用。在啟動或者執行應用的又一示例中,事件105可以發生(諸如接收電子郵件消息),該事件可以啟動或者恢復執行某些應用。例如,事件105 (例如,接收的電子郵件消息) 可以觸發宏(以例如更新電子表格、添加主題行)。事件的發生可以由如下事件句柄檢測, 該事件句柄在託管系統上運行並且針對向系統註冊的每個用戶追蹤事件。可以報告每個事件,繼而可以將每個事件與特定動作(諸如執行宏)關聯,並且可以觸發動作。每個應用102有權訪問宏鉤104。在最簡單的實現方式中,宏鉤可以簡單地是如下URL,該URL指向存儲於系統100上並且在系統100上可執行的用於宏的代碼。例如,鉤 104可以是指向JavMcript代碼的URL並且可以包含在網頁中,從而使得當網頁加載或者與操作網頁關聯的某一事件發生時,可以訪問和運行代碼。除了有助於定義應用102內的宏之外或者備選地,宏鉤104可以執行事件追蹤並且提供在外部事件105與宏伺服器子系統106之間的連接。例如,宏鉤104可以允許用戶定義與如下事件相關聯的宏,這些事件與在電子郵件應用102中接收的電子郵件有關。宏可以標識與電子郵件應用102可以提供的對象不同的對象。另外,宏的宏代碼112可以按照與電子郵件應用102中的宏的本機語言不同的語言。宏鉤104也可以追蹤與該宏有關的任何事件並且可以在恰當時間與宏伺服器子系統106交互。用戶可以通過選擇用於記錄宏或者執行現有宏的選項來實例化或者實現宏鉤104。外部事件105可以包括用於觸發執行宏的多種事件(包括接收電子郵件消息(例如,在電子郵件應用中)、確定某些條件(例如,超過限額、拒絕用戶訪問、過程已經完成等) 等等)存在(例如,由應用)。此類的事件可以由事件句柄追蹤,並且可以針對希望在系統 100中發生特定事件時執行一個或者多個宏的每個用戶向事件句柄註冊待追蹤的特定事件。在一些實現方式中,諸如在代碼行確定滿足某些條件(例如,變量已經達到某個值或者針對夜間完成記帳更新等)時可以在代碼中俘獲事件。外部事件105也可以包括檢測諸如文本消息、博客條目、傳入RSS訂閱等消息。外部事件105可以包括檢測在在線拍賣站點上發布如可以例如由拍賣項目的標題或者描述(例如,「梵蒂網珍藏牌照(vintage Vatican license plate)」)確定的特定項目。用於外部事件105的觸發條件可以包括不同條件組合。例如,在觸發與電子郵件應用有關的事件時使用的條件可以包括電子郵件主題行、發件人ID(例如,老闆、配偶、孩子等)、收件人(例如,使用「收件人」比對「抄送」比對「密送」的組合)、收件人數(例如, 當我是唯一收件人時告訴我等)、是否有附件、從其發送電子郵件的位置、消息主體中的關鍵詞或者電子郵件是否很可能是垃圾郵件。可以與文字處理應用對應的條件可以包括文檔的大小、文檔的來源、文檔的創建日期和/或最近修改日期、文檔的作者等。對於電子表格應用,可以用於觸發事件的條件包括特定電子表格單元的值、單元的值是否已經改變、電子表格的實際數據的行數或者列數、電子表格的作者、電子表格的大小等。應用於其他類型的文檔的條件可以包括是否僅該文檔已經發生改變。其他觸發事件可以由web上的來源或者服務(諸如例如由在線天氣服務站點發布的如下警報,該警報預告龍捲雲逼近特定城鎮) 生成。在這樣的情況下,對天氣謹慎的用戶可以已經構造宏以截獲與外部天氣有關的事件並且向他的家人或者鄰居生成文字和/或電話呼叫。事件也可以是來自多個不同來源的組合。例如,從特定用戶接收電子郵件起初可以觸發初始事件,但是可以僅在該事件發生並且使用位置追蹤服務來確定發送或者接收電子郵件的用戶在特定位置之後執行宏。也可以施加使用來自其他服務的信息的附加或者備選條件。宏伺服器子系統106可以監視系統100中的特定事件(諸如由應用102傳播的事件(例如,電子郵件消息等))。除了可以充當給宏伺服器子系統106的指令(例如,「中止與伺服器XYZ、應用ABC或者用戶John Doe的通信直至進一步通知」)的事件之外,宏伺服器子系統106感興趣的特定事件還可以包括宏可以尋址的任何相關事件。各種服務可以與系統100交互(通過作為用於事件的觸發、用於響應於觸發而運行的宏的輸入或者來自宏的輸出)。例如,社交網絡108可以向系統100提供用於確定如何處理事件的信息。作為一個示例,宏可以被定義成響應於接收向Betty發送的電子郵件、但是僅如果電子郵件來自(例如,如在一個或者多個社交網絡上定義的)Betty的好友之一時才執行操作。在另一示例中,宏可以被設計成向(例如,如由社交網站或者分組定義的) Betty的所有好友發送自動電子郵件或者其他通知。運行社交網絡108的組織可以不同於運行子系統106的組織,前一系統108的運營商可以經由API並且在已經向子系統106的運營商給予這樣的訪問權的範圍內提供對某些信息的訪問。作為另一示例,位置追蹤服務110可以在用戶邀請時追蹤與用戶相關聯的行動裝置的位置,從而使得諸如用戶可以發現他們的好友並且反之亦然。例如,宏可以被定義成向用戶發送電子郵件或者文本,並且電子郵件或者文本的目的地可以依賴於用戶在該時間的位置。例如,如果用戶有蜂窩電話或者其他移動(例如,基於GPS的)設備,則位置追蹤服務110可以追蹤或者已知用戶的位置。根據用戶的位置,可以向用戶的行動裝置或者在家裡的設備(例如,如果用戶更接近他的住所或者如果位置服務110確定用戶很可能奔赴該方向)發送通過執行宏來傳播的電子郵件。除了例如從用戶的支持GPS的設備發送的「我在哪裡? 」位置信息之外,用戶也可以通過位置追蹤服務Iio接收「我應當去往哪裡」信息。這一信息可以例如包括GPS坐標或者簡單文本消息(例如,「這裡轉彎,並且繼而爬山前往10107」)。子系統106可以存儲、追蹤、訪問、共享和執行宏代碼的各種實例。組成宏的宏代碼112可以按照任何適當語言、但是通常可以按照由系統100使用的優選宏語言(例如, JavMcript等)來編寫或者編程。在按照熟悉方式執行宏時,宏伺服器子系統106可以解析(或者搜尋)宏代碼112的與功能和宏有關的段(諸如「獲得名稱」功能114、「校驗名稱」功能116、「獲得位置」功能118或者宏伺服器子系統106將考慮的任何其他功能或者宏)。在宏代碼112中嵌入的每個功能或者操作可以使宏伺服器子系統106執行諸如校驗用於訪問文件的用戶授權等不同類型的處理。宏代碼112可以存儲於多種位置中(諸如中央宏儲存庫或者網際網路可訪問的託管計算機系統中)。在一些實現方式中,宏代碼112的整個匯集可以按照分布方式來存儲並且在邏輯上由一個或者多個網絡聯繫在一起。在一些實現方式中,當宏代碼112敏感(例如, 它包含或者更新用戶的個人信息)或者出於國防考慮而被分類(例如,秘密、絕密等)時, 宏代碼112可以顯式存儲在單獨位置(諸如安全伺服器上)。在一些實現方式中,「收聽器」可以用於事件追蹤。例如當,在伺服器上加載電子表格並且向瀏覽器下發它的HTML時,它可以觸發如下伺服器側事件,該事件表明已經打開新電子表格。在用於這一事件的電子表格伺服器上的收聽器繼而可以校驗以查看它是否具有用於該電子表格的腳本列表。如果沒有,則它可以(例如,向腳本伺服器)進行如下調用,該調用實質上表示「有用於這一電子表格的腳本嗎?,,並且傳遞電子表格鍵、繼而存儲該腳本的列表。在電子表格伺服器上的事件句柄繼而可以校驗是否任何腳本方法被稱為 「onOpen」。如果是這樣,則它可以(例如,向Google Apps Script伺服器)發送用於執行該方法的消息。這一流程也可以使用於諸如編輯事件等其他場景中。在另一示例中,宏可以與如下電子郵件應用相關聯,該電子郵件應用已經被設置成執行某一如下消息路由,該消息路由例如依賴於主題行、電子郵件的發件人、電子郵件消息是否有很大的電子表格附件、是否有(任何種類的)附件等。以這一方式定義的宏也可以使用諸如由位置追蹤服務110提供的位置信息。例如,如果去往用戶的工作電子郵件的電子郵件消息具有大的電子表格附件並且確定用戶在家裡(因為來自他們的行動裝置的GPS 信號對應於已經註冊為用戶的家的位置),則宏可以被建立成向用戶的家庭電子郵件轉發副本。在這樣的情形中,附件可能很可能是需要回顧以便第二天在工作時演示或者投影的與工作有關的電子表格。備選地,對於其中可能發現用戶未位於他的住所附近的那些實例中,宏可以被建立成向用戶的支持電子郵件的行動裝置發送小的如下消息,該消息向用戶通知存在電子郵件。在任一情況下,可以在宏伺服器子系統106上存儲、從使宏執行的任何電子郵件應用102去除宏代碼112。對於接收的每個傳入電子郵件消息,電子郵件應用102可以通過用鉤104指向宏代碼來觸發宏。宏繼而可以標識消息的各種方面(諸如特定發件人是否為帳戶持有者的社交網絡的成員)。如果社交網絡校驗結果是肯定的,則宏可以進一步校驗位置追蹤服務110以確定帳戶持有者或者發件人的地理位置,並且可以使某些動作基於此類位置來執行。例如,宏伺服器子系統106可以在某些情形中基於帳戶持有者(或者用戶)的位置通知帳戶持有者。在其他情況下,宏伺服器子系統106可以使帳戶持有者被呼叫(例如,經由使用VOIP的通用呼叫路由系統)和/或使SMS消息被發送,或者由宏定義的其他動作。宏可以通過經由一個或者多個確認的API訪問在系統100上運行的各種應用來獲得和提供這樣的信息。當存在多個不同API時,可以向轉譯服務提供子系統106,從而使得作者可以針對用於子系統106的單個宏語言編寫而又仍然與相異應用一起工作。當在與用戶的客戶端計算設備分離的宏伺服器子系統上託管宏時可以獲得若干益處。例如,可以跨越許多不同應用來使用宏。也可以在用戶從各種接入點(諸如他們的桌面計算機、別人的計算機、上網本計算機或者智慧型電話)在線之時觸發宏,並且甚至可以在用戶未在線或者未在他們的計算機旁時觸發宏。這樣的宏可以被定義成截獲一個類型的應用(例如,電子郵件)中的事件並且更新另一應用(例如,電子表格,其中在電子表格中自動編譯用於用戶的傳入電子郵件消息的主題行)中的數據。另一益處可以是有能力在用戶之間完全共享宏而無需人工複製它們。可以代之以對每個宏設置一個或者多個安全級從而向其他用戶允許如由創建或者首次保存宏的用戶確定的訪問。例如,恰如可以例如針對共同web財產(諸如在線照片共享站點)完成的那樣,用戶可以設置用於宏的訪問安全級並且可以向另一個人提供宏的URL。在宏伺服器子系統上託管的宏也可以在某些實例中具有提供如下能力益處,該能力用於針對來自多種用戶的數據運行宏或者向多種用戶提供運行宏的結果。例如,共享宏可以用來將若干作者的投稿組合成更大卷(諸如由若干人編寫的詩作或者文章)。每個投稿人的文檔可以保存在預定位置,並且如果投稿人已經提供對該位置的訪問,則宏可以訪問該文檔。繼而可以使組合的卷作為單個文檔可用於每個投稿人並且可能可用於附加用戶。作為另一示例,可以使用託管子系統上的宏來創建企業工作流程應用,以諸如對文檔進行路由用於準許,其中該文檔一直本地存儲在伺服器系統上。圖2是能夠操作共享宏的託管計算機系統200的示意圖。通常,系統200提供各種如下部件,這些部件示出了可以由用戶在託管系統上創建、保存、共享、訪問並且執行宏的方式的一個示例。在這一系統200中,宏伺服器子系統202提供用於在腳本信息儲存器數據存儲庫206中以持續方式保存宏代碼的位置,其中保存的信息可以包括宏庫名稱、腳本內容和宏所有者的標識符(例如,使用混亂用戶ID (obfuscated user ID)或者其他標識符)。當運行宏時,可以向宏伺服器子系統202發送用於執行給定宏的命令。繼而可以從腳本信息儲存器數據存儲庫206取回代碼,並且可以在腳本引擎或者腳本執行器208中創建實例。可以構造並且可以在基於能力的安全包裹器中包裹代表用於不同伺服器側應用的編程API的Java對象,並且這些對象變成程式設計師可見的包裹服務(或者「bean」)。包裹服務210可以包括宏伺服器子系統202可以例如向與宏執行有關的包裹服務的消費者供應的所有相關服務。包裹服務210可以是任何如下相關對象,該對象是其他如下對象的匯集, 封裝這些對象從而使得可以容易地到處傳遞它們。包裹服務可以包括如下Java業務委託,該業務委託揭示與後端服務交互的公用方法。可以在封裝或者其他如下機制中包括公用方法,這些機制用於封裝方法、類、串、電子表格、應用編程接口(API)和由各種計算機語言(例如,Java等)提供的其他工具。公用方法可以揭示例如可以用來定義和執行宏的資源(或者使這些資源公用)。可以將公用方法的某些實現方式的細節保持為私有,這可以提供適當水平的信息隱藏和抽象。公用方法可以跨越若干不同類型的對象看來相似從而向宏用戶揭示有些一致的觀感並且因此提供某一水平的多態性。因而,包裹服務的匯集可以有助於用戶在面向對象、事件驅動的環境中使用宏。這些包裹服務或者bean在這一示例系統200中附著到如下頂級Java對象,該對象具有用於每個財產(例如,電子表格、日曆等)的公用成員。這一頂級Java對象與標準和預定標籤一起插入到用於腳本執行器的環境的範圍中。在一些實現方式中,腳本執行器向腳本化環境反映公用成員(並且僅反映公用成員)。因此,當用戶的JavMcript代碼執行以下語句時var doc = google, spreadsheets, create ( "my new doc,,); (1)對頂級對象的 「spreadsheets」欄位中的Java對象調用「create」 Java方法。這一方法的Java實現方式向電子表格伺服器進行具有「CREATE」命令和與新標題(例如,「my new doc」)對應的自變量以及腳本運行器的混亂標識符的遠程過程調用。電子表格伺服器創建新電子表格並且在對遠程過程調用的響應中返回它的鍵。宏伺服器創建如下新Java對象,該對象代表新創建的包含新鍵的電子表格。Java對象包括用於諸如「rename」、「 inserUheet」等若干電子表格操作的方法。該對象也被包裹在基於能力的安全包裹器中並被返回。腳本執行器在內部將這一對象包裹到NativeJavaObject包裹器中並且將它返回到上述變量「doc」。在包裹對象的一些實現方式中,任何適當服務(例如,電子表格、日曆、電子郵件等)可以返回在Java動態代理中包裹的對象。可以存在諸如用於安全、登錄和限額的相異代理。每個代理可以併入或者使用對它揭示什麼服務(例如,Java接口(諸如 「Spreadsheet」、「SpreadsheetRange」、「EmaiBervice」等))的如下描述,該描述可以定義公用方法。注釋可以存在於適合於不同包裹器的接口上。例如,對電子表格服務的「create」方法可以創建新電子表格。它可以具有一個如下注釋,該注釋聲明該方法是WRITE方法,從而提供例如用於向用戶警告腳本將嘗試向他們的電子表格文檔匯集寫入(並且如果用戶尚未授權用於腳本的WRITE特權則腳本將在運行時失敗)的機制。基本上,安全包裹器有助於保證給定方法的已聲明所需許可(WRITECN 102549560 A等)在用戶的授權令牌中。如果授權該方法,則它向下一層傳遞調用。也可以通過限制特定用戶可以訪問關於宏的操作的次數來提供安全性。為了執行這樣的功能,對「create」方法可以存在如下限額注釋,該限額注釋表示應當按照終端用戶的「創建電子表格」限額對這一方法的調用計數。限額包裹器可以調用或者使用如下限額服務,該限額服務保持對給定用戶使操作執行多少次的追蹤。例如,如果用戶超過限額,則該方法可能失敗;如果不是這樣,則它再次將它下傳至下一層。可以跨越設置的時間段(諸如一天、一周或者一個月)測量並且可以在定期時間點重置或者遞減用於用戶的限額。宏執行的轉錄也可以由如下登錄層提供,該登錄層記錄調用的每個方法的串版本和提供的自變量。包裹服務創建器212可以創建頂級包裹服務,這些服務的範圍依賴於宏及其環境。例如,包裹服務創建器212可以檢查運行宏的終端用戶已經向宏顯式授予的能力,並且可以創建與宏的狀態對應的頂級bean。該狀態可以例如包括當前文檔(例如,電子郵件、文本文檔、繪圖、電子表格等)(如果有)和用戶認證。包裹服務創建器212可以生成具有基於環境的能力的頂級包裹服務,並且可以向腳本執行器208的執行環境(用戶可以在該環境中例如定義和執行宏)中注入包裹服務210。在某種意義上,包裹服務創建器212可以視為用於bean的生產者或者工廠或者「bean工廠」。可以創建的包裹服務210的類型例如包括電子表格應用的能力包裹實例、日曆應用等。可以向執行範圍中插入這一 Java對象。對象的來源可以用來標識它(例如,利用標籤「TopLevel」)。因此,「TopLevel. spreadsheets」例如可以變成對能力包裹對象(例如, SpreadsheetApplicationApi對象)的引用。對象的公用方法可以作為Java對象反映到 JavaScript編程環境中並且可以使其可用於宏。例如,諸如以下代碼這樣的JavMcript代碼var doc = google, spreadsheets. getActiveSpreadsheet;var otherDoc = google, spreadsheets. openByName (" MyOtherDoc");var value = doc. find (〃 Al" ). getValue ;otherDoc. find(" B2" ). setValue (value) ; (3)可以打開現有電子表格(例如, 稱為「MyOtherDoc」的電子表格)並且將來自當前電子表格的單元Al的值複製到新電子表格的單元B2。Java對象(諸如由「find」方法返回的Range對象)如所有其他對象那樣被能力包裹並且如果認證用戶無權訪問相關電子表格則可能失敗。例如,在先前呈現的複製/粘貼單元示例中,為了成功執行而需要的訪問是對活躍電子表格的讀取訪問(例如, getValue所需)和對目標電子表格(例如,電子表格「MyOtherDoc」)的寫入訪問(例如, setValue 所需)。腳本執行器208可以負責創建用於宏的上下文並且執行對頂級包裹服務210的實際插入。可以針對每個宏執行創建新頂級範圍,以諸如防止一個執行腳本「危害」用於其他腳本的全局範圍這樣的可能性。可以利用類快門或者過濾器的實現方式來加載宏上下文, 這防止創建未準許(例如,未在可允許類的白名單上)的任何Java類。此外,腳本執行器 208可以創建用於扼制失控腳本的指令計數器,以諸如檢測腳本何時進入無限循環。在一些實現方式中,腳本管理器204可能過早地終止失控腳本。腳本執行器208可以負責各種功能(包括解析、校驗語法、功能調用、宏執行和恢復)。解析功能可以檢查腳本並且返回在數據存儲庫(諸如腳本信息數據存儲庫206)中的腳本儲存器中發現的功能和宏的列表。例如,參照圖1,由於解析功能而檢測到的功能和宏可以包括獲得名稱功能114、校驗名稱功能116、獲得位置功能118或者可以嵌入腳本或者宏代碼(例如,宏代碼112)中的任何其他功能、宏等。系統支持的其他功能也可以用來有助於管理伺服器側系統200上的宏匯集。例如,語法校驗功能可以在存儲腳本之前確定在腳本中是否有錯誤(例如,句法錯誤、語言編譯錯誤、關鍵詞誤用等)。如果檢測到句法或者其他錯誤,則可以傳達錯誤從而通知用戶或者腳本程式設計師。調用功能可以「調用」(或者啟動執行)宏中的功能。這一調用功能可以是執行宏的受限版本(諸如如下版本,該版本具有針對單元內(例如,電子表格內)的函數調用而授予的特權)。例如,宏的受限版本可以限於僅返回值而未被允許產生副作用。宏執行和恢復功能可以用來啟動和恢復宏。例如,宏執行功能可以啟動對宏的初始執行。在一些情況下,執行宏可以需要來自用戶的附加輸入。在這一情況下,執行宏可以中止或者進入等待狀態,從而使來自用戶的輸入未決。一旦已經提供了用戶輸入,則恢復宏功能就可以繼續已經暫停的對宏的執行。腳本信息倉庫206可以充當數據存儲庫從而提供和/或支持諸如腳本/宏創建、 存儲、取回、更新、刪除等操作。可以按照用戶庫、個別腳本或者應用(例如,用於電子郵件、 電子表格、文字處理文檔等的應用)組織在腳本信息倉庫206中存儲的腳本。可以對整個用戶的庫或者對庫中的個別要素執行操作。例如,一個操作可以按照用戶庫的ID取回用戶庫(例如,基於庫名稱的主鍵查找)。另一操作可以取回連結到給定文檔(諸如代表宏或者腳本的文檔)的所有用戶庫。由腳本信息倉庫206提供的取回操作可以包括如下操作,這些操作取回關於給定用戶庫的針對給定用戶的授權、取回由給定用戶擁有的所有用戶庫、按照繼續記錄的ID取回該繼續記錄等。由腳本信息倉庫206提供的創建/更新操作可以包括用於創建/更新用戶庫的操作、用於創建從庫到抽象對象的鍵(例如,文檔ID)的關聯性的操作、用於創建/更新關於給定庫的針對給定用戶的授權的操作、用於創建新繼續記錄(例如,具有用於給定用戶的串行二進位數據)和庫的操作,以及其他創建/更新操作。由腳本信息倉庫206提供的執行刪除的操作可以包括用於刪除繼續記錄的操作、 用於刪除從庫到抽象對象的關聯性的操作,以及刪除庫從而去除所有子對象(包括與授權和連結繼續相關聯的子對象)的操作。以下參照圖5描述腳本信息倉庫206的示例邏輯結構。腳本管理器204可以向宏伺服器子系統202的底層部件206至219委託命令。對具體示例命令的描述如下,並且用一系列帶字母的過程箭頭1至6 (這些箭頭一般按時間順序帶有字母)標記通向底層部件206至209的委託控制路徑,儘管某些動作可以在可能時按照另一順序出現。腳本管理器204可以執行(例如,通過委託)的一個命令是存儲用戶庫。可以例如基於用戶特權或者其他安全性在執行命令時限制命令。例如,如果用戶庫表示(例如,原型緩衝器(protobuffer)或者協議緩衝器)包含庫ID,則腳本管理器204可以保證允許執行用戶修改庫。如果授權發生,則腳本管理器204可以將它寫入到存儲層並且返回庫的新表示。如果無ID存在,則可以創建新ID,並且可以返回包含新生成的ID的表示。存儲庫可以例如涉及到解析庫中的功能(例如,使用腳本執行器208)、向庫DAO對象添加功能、檢測語法錯誤(例如,使用腳本執行器208)、存儲庫內容,以及存儲所有者。參照圖2,在存儲用戶庫時涉及到的部件可以例如由過程箭頭1、2和6指示。例如,在用於用戶庫表示時,協議緩衝器可以包括可以通過接線串行化或者在資料庫中以二進位形式持續的數據結構。該數據結構可以使用強型欄位(strongly typed field)以便實施通信協議。腳本管理器204可以執行的另一命令是導入庫。這一命令可以創建庫到給定文檔 (例如,電子表格、電子郵件日曆或者任何其他可附加上下文)的連結或者其他關聯性。例如,電子郵件消息可以與用戶的給定郵件帳戶相關聯。連結的目的在於使得底層文檔可以快速辨認哪些宏與它相關聯,以例如顯示在「Run」菜單中。例如,庫導入命令可以在數據存儲庫中創建「Link」表條目。參照圖2,在導入庫時涉及到的部件可以例如由過程箭頭1和 2指示。複製命令(這是腳本管理器204可以執行的另一命令)複製現有庫從而產生它的內容的複製品。例如,可以向新庫名稱複製包含在庫中的所有腳本和宏。儘管複製動作產生庫的內容的複製品,但是並未複製關聯性。向當前所有者設置新創建的庫的所有者。響應於完成複製操作,返回新庫的ID。例如,複製命令可以在數據存儲庫中創建新「herLibrary」 表條目而不複製任何連結、繼續或者授權。參照圖2,在複製庫時涉及到的部件可以例如由過程箭頭1和2指示。刪除庫命令可以例如校驗權限,繼而如果允許,則它可以從數據存儲庫(例如,在腳本信息206中)刪除庫。例如,刪除庫命令可以從IserLibrary」表和所有子表去除條目。前端可以例如負責完成任何「你確定嗎?」詢問。在刪除庫時涉及到的部件可以例如由過程箭頭1和2指示。用於按照用戶獲得庫的命令可以基於給定用戶的ID返回由給定用戶擁有的庫。 例如,命令可以向用戶庫(例如,在^erLibrary或者其他表中)返回在其中所有者欄位為當前用戶的腳本信息206中存儲的條目。參照圖2,在獲得用於用戶的庫時涉及到的部件可以例如由過程箭頭1、2和4指示。用於按照文檔獲得庫的命令可以返回由給定文檔導入的任何庫。例如,獲得庫命令可以掃描Link表尋找匹配的「documented」欄位,並且反饋父代IserLibrary」。參照圖 2,在獲得用於文檔的庫時涉及到的部件可以例如由過程箭頭1、2和4指示。庫分類命令(categorize library command)可以向「虛擬」文檔(諸如 「SAMPLES」)添加關聯性。例如,庫分類命令可以在具有給定名稱(SAMPLES等)的Link表中創建條目。參照圖2,在對庫分類時涉及到的部件可以例如由過程箭頭1和2指示。針對類別獲得庫的命令可以返回具有給定分類的所有庫。例如,針對類別獲得庫的命令可以與獲得用於文檔的庫類似。參照圖2,在按照類別搜索庫時涉及到的部件可以例如由過程箭頭1和2指示。評估功能命令可以從庫取回功能並且將它傳遞到腳本執行器208以用於執行。參照圖2,在評估功能時涉及到的部件可以例如由過程箭頭1、2、3、5和6指示。
評估宏命令在被提供輸入參數(例如,庫ID、宏名稱和關於當前文檔的上下文信息(如果有))時可以利用包裹器創建編程bean並且向腳本執行器208傳遞包裹服務以用於執行。參照圖2,在評估宏時涉及到的部件可以例如由過程箭頭1、2、3、5和6指示。繼續宏命令在被給予宏庫ID和繼續ID時可以在腳本執行器208上調用繼續操作。例如,這樣的命令可以使暫停的執行宏繼續活躍地執行。參照圖2,在繼續宏時涉及到的部件可以例如由過程箭頭1、2、3和6指示。更新授權命令可以針對用於給定用戶和給定宏庫的授權集更新(或者添加)數據存儲庫中的條目。參照圖2,在更新授權時涉及到的部件可以例如由過程箭頭1和2指示。 在一些實現方式中,「getlibrary」和其他命令通常可以僅作用於腳本存儲層而不調用腳本執行器208。現在參照系統200的另一部件,命令伺服小程序216可以使宏命令通過響應於來自宏控制器(例如,JavaScript宏控制器「MacroController. js」)的請求而被執行。該響應可以作為重定向(諸如對於用戶而言透明和自動的重定向)而出現。在一種示例重定向技術中,在瀏覽器客戶端對具體URL進行請求時,重定向規則可以將請求引向宏伺服器(諸如宏伺服器子系統202)。命令伺服小程序216可以處置的請求類型包括例如具有諸如GET_ ADMIN_PANEL、SET_SCRIPT等名稱的若干請求。例如,GET_ADMIN_PANEL請求可以返回宏管理面板的完整HTML,並且宏控制器(例如,MacroController. js)可以向關閉對話中插入HTML。SET_SCRIPT請求可以向命令伺服小程序216發送腳本內容和用戶庫ID。命令伺服小程序216可以調用腳本管理器204以創建/更新用戶庫,這可以造成返回用於面板的左手側(包含類別和庫名稱)的HTML(例如, 由GXP生成)。macrocontroller. js可以在用於左手側面板的分區(div)中表現該HTML。GET_SCRIPT請求可以從腳本管理器提取用於給定庫的腳本內容,並且可以返回用於編輯該腳本的內容面板(經由GXP生成)。macrocontroller. js可以將該HTML放入面板的內容分區中。IMP0RT_LIB請求可以利用導入庫命令調用腳本管理器。該請求可以經由gxp表現面板的左手側並且將它返回到macrocontroller. js。C0PY_LIB請求可以與IMP0RT_LIB命令類似,但是使用複製命令而不是導入命令。 DELETE_LIB請求可以與IMP0RT_LIB類似,但是可以使用刪除命令以便例如經由gxp返回整個管理面板HTML。CATEG0RIZE_LIB請求可以用作「添加到樣本」特徵。類似於import_ lib, CATEG0RIZ_ELIB可以利用庫分類命令調用腳本管理器並且返回面板的左手側以用於重繪(redrawing)。RUN_MACR0請求可以採用宏名稱、庫id和文檔狀態的串行化表示(例如,當前選擇等)並且調用腳本執行器208以執行給定宏。如果出現錯誤,則將錯誤消息返回到 macrocontroller. js以用於向用戶顯示。如果用戶必須授權宏,則可以將消息發送回到 macrocontroller. js 以提不用戶。宏伺服器子系統202通過網絡2 來與應用220和位置伺服器222交互。應用 220可以是由運用用戶設備226的用戶執行的應用(諸如在用戶的膝上型計算機上運行的 web瀏覽器)。用戶設備2 可以例如顯示網頁226a(例如,使用電子表格伺服器)。用戶的web瀏覽器可以運用宏控制器226b以便控制在用戶的用戶設備2 上的宏的執行。
來自第三方過程和網頁2 的外部事件可以充當用於在宏伺服器子系統202內定義的宏的觸發機制。可以經由網絡230(諸如網際網路)接收外部事件。這裡的外部事件可以對應於關於圖1描述的外部事件105。這裡的系統也可以允許用戶通過對宏記錄器進行實例化、執行由宏記錄器追蹤的多個動作,並且保存那些動作的如下表示來記錄宏,用戶以後可以調用該表示以用於自動執行動作。通常可以在這一實現方式中在伺服器側上執行宏記錄。當用戶執行可記錄命令 (例如,設置單元值、插入表格等)時,可以向電子表格伺服器發送命令。該伺服器可以指出它是否處於「記錄」模式中,並且如果是這樣,則可以查找命令並且將文本寫入到與將具有相同效果的腳本化代碼對應的運行串緩衝器中。例如,考慮如果用戶向電子表格的單元Al中鍵入「hello」。可以向電子表格伺服器發送如下命令,該命令具有意味著「設置範圍」的命令ID、「hello」值、為0的行、為0的列和為0的表格ID (例如,如果它是第一電子表格)。注意,這不僅用於記錄器;這是在電子表格伺服器上實際地執行對單元的改變的命令,因而無論記錄是否發生都發送這一命令。記錄器因此可以實質上等效於對使電子表格操作的現有命令流程的竊聽。記錄器可以查找命令ID並且發現它是「設置範圍」命令。知道了將生成的適當代碼是對「範圍」對象的「setValue」調用,記錄器可以查找和使用行和列以生成對應文字。記錄器繼而可以查找和使用電子表格標識符,從而確定用於該表格的變量是否已經存在。因而,宏記錄器可以生成諸如以下文本sheet. getRangeC al' ). setValue (『 hello' ) ; (2)因此,通過這些結構,計算機用戶可以登錄託管計算機服務並且訪問多個不同應用和服務。用戶可以顯式選擇執行宏或者宏可以被自動觸發,並且宏可以在應用和其他如下相關應用中運行,如果宏引用這些應用則可以自動對這些應用進行實例化。因而,用戶可以有權訪問多種數據和編程機制以產生魯棒的在線服務。圖3是用於在託管計算系統上執行宏的過程300的流程圖。過程300可以例如用於在系統100和200中運行宏。通常,所示過程涉及到標識相關宏代碼、創建用於執行代碼的對象,以及執行代碼以與託管計算機系統上的一個或者多個應用交互。在這一示例中,過程300開始於框302,其中接收用於運行宏的命令。命令可以是如關於圖1描述的外部事件105的結果,或者用戶可以人工選擇將運行的宏。例如,在前一種情況下,外部事件105可以是接收電子郵件,並且命令運行的宏可以是用於響應於接收電子郵件來執行操作(諸如用電子郵件的主題行更新電子表格)的宏。可以在檢測外部事件105時涉及到宏鉤104,該宏鉤繼而再次負責諸如通過與宏伺服器子系統106通信來觸發將運行的宏。在框304處,標識、取回和執行宏代碼。例如,參照圖2,腳本管理器204可以向腳本信息206標識將被執行的宏代碼。腳本信息206繼而可以向腳本管理器M返回請求的宏代碼,該腳本管理器繼而可以發起它的執行。作為執行宏代碼的義部分,(在框306處)創建具有如下Java對象的實例,這些對象代表用於宏與之交互的應用的編程API。API可以對應於宏代碼與之交互的應用。例如, 如果宏代碼被設計成更新電子表格,則創建的實例包括如下Java對象,這些對象代表用於對應電子表格應用的編程API。
在框308處,在安全包裹器中包裹對象。例如,安全包裹器可以是如下附加代碼, 該代碼包圍宏代碼本身,從而例如不允許宏代碼運行,除非用戶採取肯定動作。在一些實現方式中,動作可以是點擊「0K」或者以某一其他方式顯式準許宏。安全包裹器可以按照各種方式保護終端用戶諸如免受來自木馬的攻擊、釣魚攻擊或者其他惡意代碼的攻擊。在一些實現方式中,可以在向用戶遞送對話框之後構造安全包裹器。在對話框中包括的消息可以將宏標識為潛在非信任宏,並且還標識如果運行宏則可能發生什麼。在一些實現方式中,對話框可以標識該宏專屬的潛在有害動作的列表,該列表基於對宏的掃描。掃描宏可以例如有助於至少部分基於宏中的文本串或者與已經惡意的以往宏的內容對應的一些其他信息來標識具體潛在有害影響。用戶可以準許或者不準許宏可以具有的訪問權。用戶的準許可以用來構造上文引用的基於能力的安全包裹器(諸如允許宏具有讀取特權、但是不允許宏更新某些文件)。在這一情況下,用戶向宏授予的並且在安全包裹器中反映的特權或者權限限於用戶已經準許的那些類型的動作。在一些實現方式中,用於生成安全包裹器的過程可以檢測如下惡意代碼,該惡意代碼試圖誤導用於檢測惡意代碼的機制。例如,可以連結宏中的子串「de」和「lete」而不是對「delete」編碼,以試圖隱藏真實刪除操作的意圖(例如,「delete」)。這裡描述的過程可以被編程為標識這樣的實例並且防止如下刪除,其中用戶未向宏授予刪除準許。在框310處,針對宏涉及的每個應用向相關伺服器進行調用。調用涉及到執行如下對象,這些對象包含與宏與之交互的應用相關聯的方法或者其他編程API。例如,調用可以包括執行如下宏代碼,該宏代碼更新電子表格、轉發電子郵件、複製文件等。繼而發生(在框312處)與來自每個應用和訪問服務的反饋的交互。例如,交互可以包括用戶與宏剛才已經對其操作的應用的交互。用戶可以例如讀取用戶由於宏轉發來自另一用戶的電子郵件而剛才接收的電子郵件(並且執行與該電子郵件的其他交互)。以這一方式,可以跨越在系統中的單獨子系統上運行的多個應用在中央系統上執行宏。宏可以包括安全機制,並且可以用多種方式來觸發。此外,宏可以從在系統內可訪問的多種不同服務或者通過網絡(諸如網際網路)從其他系統獲得信息。圖4A是過程400的流程圖,該過程用於執行從在網頁上運行的應用調用的宏。通常,該過程包括。通常,圖4A中所示過程與圖3A中所示過程類似並且示出了用於可以在多部件系統中的不同部件之間共享過程的方式的示例。示例過程400包括與在瀏覽器401a與宏伺服器401b之間的交互對應的步驟。例如,在該過程的瀏覽器側的交互可以涉及到用戶運用如下客戶端設備,該客戶端設備運行電子表格應用,而執行的宏可以在數據伺服器系統(諸如宏伺服器401b)運行(並且通過該數據伺服器系統獲得數據)。除了通用交互之外,在瀏覽器側上示出的過程400的步驟與可以在用戶與(例如,由電子表格伺服器系統提供的)電子表格應用之間出現的宏無關。 在宏伺服器側上執行的過程400的步驟可以例如由宏伺服器子系統202執行。過程400也可以代表在上文關於圖1和圖2描述的系統100和200上執行宏。通常,過程400在宏伺服器401b這一側中的步驟可以由腳本管理器204控制。在框402發生對執行宏的請求。例如,該請求可以源於用戶在客戶端設備上運行瀏覽器應用。用戶可以執行鍵組合以觸發運行宏,或者可以通過在應用中打開特定文檔、用戶選擇對應用的控制或者通過除了用戶與系統的交互之外的機制(諸如通過由子系統接收外部信號)來發起運行。在步驟404處,發起對宏的執行。該發起可以例如發生在宏伺服器子系統202內。 例如,可以在子系統上加載與可以由客戶端設備傳遞或者標識的地址對應的宏代碼,並且它的執行可以用正常方式開始。在步驟406處,確定用戶是否已經提供了用於執行宏的授權。這樣的動作可以出現在開始宏代碼執行時。例如,用戶授權如上文描述的那樣可以是用於防止惡意代碼運行的實踐的一部分。如果用戶授權不存在,則在步驟410中提取用戶授權要求,並且在步驟412中提示用戶授權。如果用戶在步驟414處提供授權,則在步驟416處存儲用戶的授權;否則過程 400在步驟418處結束。用戶授權要求可以例如包括如果允許宏執行則可能出現的惡意結果類型的列表。可以在步驟412處向用戶呈現該列表。如果用戶授權存在,則在步驟408處創建包裹服務。包裹服務(或者「bean」)可以例如由包裹服務創建器212創建。這樣的動作可以是可選的並且如上文描述的那樣可以用來保護執行代碼免於惡意幹擾。在步驟420中,在腳本執行器中執行腳本(或者宏)。例如,參照圖2,腳本可以由腳本執行器208執行。該執行與在客戶端上本地出現的宏執行對比例如出現在宏伺服器子系統202內。腳本執行可以按照正常方式出現,而子系統的部分逐步遍歷腳本中的步驟並且在遇到每個步驟時執行它們的動作。在步驟422處,確定是否已經遇到繼續。如果是這樣,則在步驟4 處存儲繼續。繼續實際上可以用來暫停腳本,直至特定時間或者事件已經出現。如果未遇到繼續,則處理在步驟似4處恢復,其中確定是否已經遇到錯誤。如果未遇到錯誤,則在步驟430處成功結束對宏的執行。如果在步驟4M處遇到錯誤,則在步驟430 結束宏的執行之前在步驟4 處向用戶告警。因此,通過這一過程,可以向用戶提供由如下宏提供的功能,該宏由用戶對客戶端設備的動作(或者由其他事件)觸發,並且宏可以在與客戶端設備分離的子系統上執行。在一些實例中,執行可以在用戶未在線時發生,並且可以使宏執行的結果可用於用戶和向系統註冊的其他用戶。繼續可以充當腳本解譯器的執行狀態的「快照」,從而凍結執行,從而使得以後可以恢復執行。這在概念上與斷點如何在調試器中操作或者在標準瀏覽器側執行(例如, JavaScript)中的「告警」調用類似。可以將繼續實施為解譯器中的所有對象(例如,所有局部變量和「bean」)的二進位串行化,以及指向當前執行點的指針。可以在腳本執行器208 內實施繼續,該腳本執行器可以支持繼續作為公用可用特徵。腳本執行器208可以例如使用Java串行化(Java的標準特徵)來對所有對象(例如,包括「bean」)進行串行化。使用 Java串行化,可以向如下二進位流寫出對象(及其所有子對象),該二進位流包含對象標識符和所有欄位的當前值。當宏恢復時,可以向腳本執行器208給予可以例如在解串行化成新實況Java對象時使用的繼續二進位數據。在一些實現方式中,繼續可以存儲在資料庫中。繼續存儲於資料庫中(例如,直至恢復宏),而不是伺服器存儲器中。資料庫存儲的一個原因可以是因為伺服器可以在觸發繼續的時間與用戶恢復執行(例如,通過點擊對話上的「ok」按鈕或者某一其他恢復動作)的時間之間重啟。在一些實現方式中,繼續可以具有預定壽命(例如,六個小時),此後可以丟棄它們。以這一方式,諸如如果用戶從未著手點擊「ok」按鈕,則繼續未保持佔用磁碟空間。圖4B是用於在託管系統上記錄和執行宏的過程431的泳道流程圖。示例過程431 包括在瀏覽器、宏記錄器、宏伺服器和應用之間的交互。通常,該過程從伺服器子系統向用戶提供宏記錄控制集,其中用戶可以運用控制項以表明應當何時記錄由用戶和系統採取的動作,並且此類動作繼而可以重新格式化成用於宏的如下代碼,該代碼在調用宏時重新執行動作。該過程始於塊432,其中用戶選擇宏記錄器。該選擇可以在例如用戶選擇用於開始記錄宏的控制項時在瀏覽器上出現。在步驟434處,供應宏記錄器。宏記錄器可以在用戶的瀏覽器上執行,或者宏記錄器可以諸如在宏伺服器子系統202遠程執行。宏記錄器可以例如顯示在與如下窗口分離的無邊界瀏覽器窗口中,該窗口當前顯示用戶的客戶端設備上的應用。也可以用諸如在iFrame或者如下類似要素中的其他方式供應記錄器,該要素是顯示應用的相同頁面的一部分。在步驟436處,與應用一起顯示宏記錄器。例如,如果用戶在他的膝上型計算機上在他的瀏覽器內執行電子表格應用,則彈出菜單或者其他顯示可以出現並且代表宏記錄器。宏記錄器可以與用於控制記錄器的操作的各種控制項(諸如用戶可以選擇的記錄、暫停和停止按鈕)一起顯示。在步驟438處開始記錄,這意味著用戶可以開始如下鍵擊等,這些鍵擊定義宏。這樣的記錄可以由向如下伺服器子系統發送的如下消息觸發,該伺服器子系統經由顯示記錄器的代碼服務於記錄器,該消息表明用戶已經選擇了記錄器上的記錄控制項。在步驟440處,用戶與應用交互,這意味著用戶執行如下操作(鍵擊、選擇等),這些操作用於定義宏在用戶使用的應用內的功能。例如,用戶可以選擇電子表格中的單元範圍、可以對那些單元執行命令(例如,複製和粘貼它們、在它們中輸入公式等),並且可以執行其他此類動作。在步驟422處,在用戶與應用交互的時間期間,宏記錄器開始記錄用戶的如下動作,這些動作可以包括在用戶在記錄過程期間記錄命令時顯示命令。如上文所言,記錄器可以用與應用解譯用戶輸入的方式相同的方式解譯用戶輸入,並且繼而可以將此類解譯動作轉換成宏以後可以在它運行時向應用饋送的命令。記錄器也可以追蹤用戶在其內執行命令的應用(例如,瀏覽器窗口),從而使得宏可以知道在它運行時向那些各種不同應用提供命令。在用戶與應用交互並且記錄動作之時,在步驟444處提供對用戶的動作的標準執行。該執行可以出現於用戶與之交互的應用內。因此,可以並行向應用和宏記錄器提供用戶的動作,從而使得記錄動作,並且也使得應用以適當方式對動作起反應。響應於完成定義宏,諸如通過按壓「完成」鍵、在記錄器中的「停止」按鈕或者其他控制項從用戶接收保存命令。在步驟448處,發送用於宏的信息。這樣的信息可以在用戶執行命令時的記錄時間解譯成宏命令,或者可以在宏記錄已經停止時被解譯和轉換。宏記錄器繼而可以例如向宏存儲庫發送信息並且可以生成指向宏代碼的一個或者多個指針(例如, URL),從而使得可以在以後時間容易地訪問代碼。例如,宏記錄器可以請求用戶標識將用來在以後時間啟動(launch)宏的鍵組合。在步驟450處,保存包括(將在其中存儲宏的)庫名稱、(如由宏記錄器記錄的)腳本或者宏內容和用戶ID的宏信息。也可以視情況保存其他信息並且將其與宏相關。以後(瞬間以後或者數天或者數年以後),當用戶決定運行宏時,用戶可以指定將運行的宏。可以例如通過從針對用戶當前與之交互的應用而定義的宏列表選擇宏名稱來實現對宏的選擇。例如,用戶可訪問的宏列表可以與用戶的帳戶關聯存儲,並且可以在列表 (其中每個宏的製作者已經提供了用於宏的可理解名稱)中顯示給用戶。備選地,可以諸如通過執行另一個宏、通過在系統上出現獨立於特定用戶的動作的事件或者以其他方式自動進行對宏的選擇。用戶也可以諸如通過被提示第一用戶想要其有權訪問宏的其他用戶的電子郵件地址或者其他帳戶標識符來使保存的宏可用於其他用戶。用戶也可以諸如通過指向消息發送分組(例如,電子郵件列表)或者用於特定域或者子域的所有用戶(例如,從用戶的僱員訪問系統的所有用戶)來提供一組其他用戶。例如,可以可選地在步驟45 處諸如從用戶接收用於運行宏的輸入。備選地,用於運行宏的觸發事件可以在步驟452b處發生。通過任一機制,在步驟妨4處接收和執行與宏對應的宏代碼。在宏執行的初始階段,在步驟456處針對與宏相關聯的應用對應的API創建對象。 此類對象可以代表為了執行宏而需要的對象,並且可以例如包括將命令從一個格式轉譯成另一格式的對象、包裹其他對象的對象、施加限額的對象以及其他此類對象。在步驟458處,在安全包裹器中包裹對象。這樣的包裹可以通過上文描述的機制發生,並且可以用來保護用戶免於在系統上執行惡意代碼。在步驟460處,利用用戶ID調用(或者援引或者執行)應用。調用應用可以由宏伺服器子系統202執行。在調用中包括用戶ID以便諸如通過保證用戶被授權讀取、更新或者刪除特定文件等來校驗授權。在步驟462處,執行與將在調用的應用中執行的步驟有關的動作。例如,動作可以對應於在記錄的宏中記錄的個別指令或者步驟。對步驟的執行出現於可以在與宏記錄於其上的瀏覽器在物理上遠離的應用中。事實上,在一些示例中,宏可以已經由完全不同的用戶記錄和保存於不同瀏覽器上。在這樣的情況下,不同用戶可以是被原先記錄宏的用戶授權使用宏的好友或者家庭成員。在步驟464處,返回為了進一步執行而必需的鍵。這些鍵可以例如包括由用戶提供的輸入或者由應用本身傳遞的參數。從目標應用(例如,電子表格應用)返回的「鍵」可以標識其狀態可能由於給定命令而已經改變的任何項目。例如,命令INSERT_SHEET可以導致新表格是「當前」表格。宏可以具有可操作用於反映新當前表格的其他命令(例如, getActiveSheet) 0其他命令(例如,INSERT_R0W)可以改變當前選擇從而改變哪些單元當前是活躍單元。可以在任何後續命令(例如,getActiveklection)需要當前狀態和選擇數據的情況下向宏反饋該信息以用於存儲。步驟460、462和464可以繼續相對同時地運行直至宏完成。可以在步驟464處遇到和執行最後指令時或者在執行宏時的事件暫停執行宏時出現結束。圖5示出了用於宏系統中的對象的示例結構(具體為用於結構(諸如圖2中的腳本信息倉庫206)中的信息的示例邏輯結構)。邏輯結構500由節點502至508代表。例如,對於存儲在腳本信息倉庫206中的任一個宏可以有至少一個結構500或者其部分。繼續節點504、連結節點506和用戶授權節點508都具有與用戶庫節點502的0. . N關係,這意味著對於每個用戶庫(或者表頭部)節點可以存在任何數目(包括零個)繼續、連結和用戶授權。該結構的根節點是用戶庫節點502,該節點例如定義宏和/或庫的名稱(例如,在 "Dan,s Cloud-based MacroLib」 中的 「Macro_XYZ」)、宏庫的所有者(例如,「Dan」)和與宏相關聯的腳本(例如宏代碼)。每個宏庫可以具有也可以充當資料庫主鍵的唯一標識符 (諸如64位偽隨機數)。在一些實現方式中,當從資料庫取回宏時未使用諸如庫名稱和包含在庫內的功能集這樣的欄位;它們嚴格地用於在運行/顯示宏庫時使用。「所有者」欄位例如可以作為外來鍵來與諸如「獲得由用戶X^擁有的所有宏」這樣的操作一起使用。連結表可以例如與諸如「獲得由文檔CTZ使用的所有宏」這樣的操作一起使用。繼續節點504可以包括繼續ID、繼續數據(例如,來自諸如用於在宏已經進入等待狀態之後利用附加輸入恢復宏的附加入口點)和用戶名稱(例如,創建了繼續節點504的用戶)。對於給定宏可以存在多個繼續節點504。可以記錄繼續的「所有者」以主要防止會話劫持,從而使得例如用戶X無法恢復用戶Y已經運行的宏。以這一方式,操作可以保證僅用戶Y可以恢復他們發起的宏。可以允許多個此類記錄,因為一個用戶可以具有若干繼續 (例如,在單獨窗口中的三個打開電子表格,每個電子表格具有活躍的提示對話框)。多個用戶也可以同時運行它們自己的宏實例,每個實例具有它們自己的對話提示。連結節點504允許外界實體連結到宏。連結節點504可以包括如下文檔ID,該文檔ID可以是「指向」宏的URL或者某一其他路徑名稱。可以存在多個連結節點506,因為可以有用於相同宏的若干不同名稱(和通向相同宏的若干不同URL路徑或者其他路徑)。用戶授權節點508可以包含允許對宏的限制訪問的信息。例如,限制原型緩衝器欄位可以使用協議值模式(protocol pattern of value)來控制訪問,而用戶欄位可以基於用戶ID控制訪問。可以在每個節點508中使用任一個或者這兩個欄位。對於給定宏可以存在多個用戶授權節點508,每個節點標識不同授權級。用戶授權節點508可以實施對每個宏每個用戶存在僅一個授權記錄。該實施可以將用戶的準許戳記的表示用於他們對該宏的執行以及宏可以完成的操作。之所以可以允許多個記錄僅因為多個不同用戶可能各自已經授權宏,並且各自可以已經授權不同動作以用於讓它執行。當用戶X執行宏時,上拉他們的用於該宏的授權記錄;忽略所有其他授權記錄。如果針對宏的要求改變(例如,如果作者添加向博主的調用),這變更宏需要運行的要求,則可以將現有用戶授權標記為無效。因而,當用戶試圖在添加附加要求之後重新執行宏時,可以重新提示他們授權。例如,提示可以表示「這一個宏需要訪問日曆和博主」,其中宏先前可能已經簡單地表示了 「這一個宏需要訪問日曆」。如果刪除服務,則可以無需提示重新授權;唯有要求增加才需要提示。圖6示出了宏構造系統600的示例屏幕截圖。用戶可以使用系統以例如基於外部事件建立用於可以隨後執行的或者可以在用戶選擇時人工運行的宏的參數和規則。通常, 系統將宏構造組織成各自在屏幕截圖的列中示出的三個階段,並且每個階段(包括每個階段內的子階段)可以在配置它之前隨階段改變。使用這樣的系統,用戶可以快速地標識用於宏的觸發、來自與所選觸發有關的可用參數中的用於操作宏的參數,以及與所選參數對應的宏結果。在一個示例中,用戶可以構造如下宏,該宏基於與電子郵件有關的事件執行電子郵件功能。在另一示例中,宏可以被構造成在不與電子郵件有關的應用(例如,電子表格、 文字處理應用等)中執行操作。在又一示例中,用戶可以構造如下宏,該宏具有輸出而未依賴於任何觸發事件。無論作為觸發或者輸出的應用類型如何,在屏幕上簡單地進行用戶選擇可以自動導致構造對應宏。在屏幕「後面」運行的軟體應用可以例如在圖6的屏幕截圖中所示界面上處理用戶的輸入和選擇,並且可以自動構造宏(包括插入適當宏語法、各種應用和語言專屬API調用,以及為了宏運行而需要的宏部件)。所有這些可以對於在少數欄位中錄入有意義的少數輸入的用戶而言透明。屏幕截圖600包括宏名稱欄位601,該欄位標識當前正被構造的(例如,如由用戶初始定義或者以後更新的)宏。如上文所言,用於宏的定義可以出現於三個主要區域中宏觸發數據區域602、宏處理數據區域604和宏輸出數據區域606。宏觸發數據區域602可以包括如下欄位和控制項,用戶可以運用這些欄位和控制項以決定和標識如下條件或者事件,將在這些條件或者事件之下觸發宏。宏處理數據區域604可以用來定義將在宏運行時出現的處理。宏輸出數據區域606可以標識宏的輸出(諸如宏將作用於的應用數據類型和將對該數據發生的動作(或者操作))。除了數據區域602-606之外還可以存在其他數據定義區域 (諸如如果多個應用中的數據將由相同宏更新,則存在多個宏輸出數據區域606)。在一些實現方式中,提交/退回技術可以用來保證進行所有更新或者完全不進行更新,這可以有助於保持數據完整性。三個數據區域602、604和606可以被設計成大體上依次完成。在一些實現方式中,由用戶在一個區域中選擇的值可以影響在該區域下面或者右側的欄位或者控制項上顯示的內容。例如,在宏觸發數據區域602中錄入的數據可以影響在其他區域(例如,數據區域 604和606)中顯示(並且可由用戶選擇)的欄位和數據選擇類型。例如,如果用戶選擇「電子郵件」作為宏的觸發機制(例如,通過指定或者選擇屬性欄位608中的「電子郵件」),則可以按照電子郵件屬性定製在宏處理數據區域604中可用的選項。如在這一示例在中描繪的宏觸發數據區域602包括屬性欄位608、活動欄位610和參數欄位611。在活動欄位610中顯示(並且可由用戶選擇)的值可以依賴於用戶在屬性欄位608中的選擇。例如,通過在屬性欄位608中選擇「電子郵件」,在活動欄位610中的值包括與電子郵件有關的選項(例如,傳入消息、收件箱大小、標籤大小等)。選擇不同屬性 (例如,在線拍賣)可以在活動欄位610中導致不同條目(例如,項目數量、項目類別等)列表。參數欄位611可以用來向活動分配值。用戶可以在參數欄位611中錄入或者選擇的潛在值可以例如包括大小、顏色、美元數額、時間段、語言、性別或者僅關於適合於特定應用的任何定量或者定性值。在一些實現方式中,可以根據活動框610的值自動標記參數欄位611 上的標籤(例如,大小、顏色、價格等)。宏處理數據區域604包括條件欄位612、校驗服務欄位614和服務值欄位616。條件欄位612顯示用於標識如下條件的選項,這些條件將觸發宏的某些動作(例如,諸如以某一方式轉發傳入電子郵件)。在條件欄位612中顯示的確切值(例如「來自用戶」或者「來自分組中的用戶」等等)可以例如依賴於用戶在屬性欄位608中的條目(例如,「電子郵件」)。如果用戶選擇用於屬性欄位608的不同值(例如,「電子表格」),則可以在條件欄位 612中顯示(例如,與電子表格有關的)不同值集。校驗服務欄位614可以標識應用和宏外部的將在收集用於運行宏的信息時由宏校驗的服務。例如,通過在校驗服務欄位614中選擇「定位器」,用戶可以定義宏應當在它的執行期間校驗發件人的位置、用戶X的位置或者在電子郵件的副本行(carbon copy line) 中列舉的具體用戶的位置或者其他選擇。服務值欄位616標識將從引用的一個或者多個服務向宏返回什麼特定值。在這一情況下的位置可以例如基於接近實時GPS位置、通過蜂窩電話三角測量來追蹤的位置、街道地址、郵政編碼或者任何其他適當定位標準。在一些實現方式中,宏處理數據區域604可以包括用於在宏中使用布爾算符的各種機制。這些機制可以是通過將條件欄位612與校驗服務欄位614相與(AND)來暗示的隱含「AND」以外的其他機制。例如,條件欄位612可以與描繪為單選按鈕的任何/所有控制項 617的集合一起使用,這可以有助於指定顯式AND/OR算符和邏輯。例如,用戶可以選擇任何 /所有控制項617中的「任何」(或者「所有」)選項以便指定將考慮在校驗服務欄位614中校驗的個別選項中的任何(或者所有)選項用於宏。在一些實現方式中,可以針對宏構造系統600上的其他欄位等提供附加布爾控制項和欄位(諸如欄位名稱、欄位值、布爾算符和適當放置的括號的直接文字輸入)。例如,可以在可以通過選擇高級布爾控制項618來可達的屏幕或者其他接口上包括那些類型或者更高級類型的控制項。在一些實現方式中,訪問高級布爾控制項618可以允許用戶查看用於整個宏的現有邏輯,並且可以例如包括由更新的用戶選擇代表的當前邏輯以及在數據區域602至 606中進行的輸入。系統600可以執行自動語法校驗並且驗證由用戶錄入(或者從列表選擇)的欄位與用來校驗它們的值兼容。宏輸出數據區域606包括屬性欄位620、動作欄位622和參數欄位624。這些欄位可以例如用來指定宏的特定輸出(例如,完成這一輸出、發送那一輸出、更新特定文件、欄位或者電子表格單元)。在圖6中所示的示例中,為屬性620選擇「電子郵件」,從而導致在動作欄位622中顯示與電子郵件有關的條目。因此,用於這一個宏的輸出將是向某一地址或者一些地址發送某一形式的電子郵件。參數欄位擬4可以在必要時(例如,基於在它上方的選擇和欄位)用來向欄位或者選擇賦值。在一些實現方式中,可以在欄位「後面」定義欄位的值,從而使得雙擊欄位名稱可以顯示用於為欄位定義值的彈出菜單,並且懸停在欄位之上可以顯示欄位的當前值。在圖6中所示的示例宏構造屏幕中,宏觸發數據區域602被定義成在電子郵件應用(例如,按照屬性欄位608)接收(例如,在活動欄位610中標識的)「傳入消息」時觸發宏。宏處理數據區域604包括指定具體用戶的條件612,這些條件包含電子郵件的主體中的具體文字並且基於用戶X的位置。可以例如在其他參數欄位(在圖6中未示出)定義用於這些條件的值。因此,如果滿足了此類條件,則宏將執行至完成。宏輸出數據區域606示出了 「電子郵件」是當前宏的輸出類型,並且將執行的動作是「發文字給我」(例如,如在動作欄位622中定義的那樣)。由於在數據區域602至606中錄入的值,響應於檢測到來自特定用戶的傳入電子郵件消息(該消息包含主題行中的具體文字,並且基於用戶X的位置)的觸發事件,宏使用消息發送應用向傳入電子郵件的目標發送如下文本消息,該消息告訴他們收到了這樣的電子郵件。示例宏構造屏幕的優點在於它按照簡潔GUI格式向用戶提供這一信息,而又隱藏執行功能的底層宏,並且用戶甚至無需知道如何編寫宏或者甚至如何識別宏。屏幕可以用來構造完全宏或者構造宏的一部分,其中用戶可以向宏添加屏幕不能提供的其他代碼。
用於定義宏的其他接口可以包括例如用於「保存」輸入或者更新的宏、用於「撤消」 對宏的一個或者多個更新或者改變、用於「顯示」所得宏或者「取消」編輯而不保存的按鈕或者控制項626。「從……複製」欄位6 可以允許用戶通過複製現有宏或者複製用於現有宏的參數以便將屏幕預設於用戶繼而可以變更的初始狀態來創建和定義新宏。描述欄位630 可以允許用戶記錄宏的目的或者向宏提供在宏的名稱中未捕獲的某一級含義。在一些實現方式中,宏定義可以具有與它們相關聯的時間要素(諸如用於何時宏將首先生效的生效日期632、用於何時宏將不再執行的截止日期634,以及可以例如用來指定宏將執行的日子(工作日、周一、周末等)的時間表或者「運行於」欄位636)。數據欄位可以包括具體日期或者日期範圍和/或時間,或者可以包括枚舉類型(例如,現在、從未、工作日等)。在一些實現方式中,由系統600提供的用戶接口可以適於在具有更小顯示器的諸如智慧型電話等用戶設備上執行。例如,可以依次提供數據區域602至606和其他欄位。在一些實現方式中,可以針對整個屏幕提供滾動條,從而允許用戶一次導航到一個總體區域。使用系統600構造的宏可以與上文關於系統100和200以及圖1和圖2描述的安全方面一起使用。具體而言,可以在基於能力的安全包裹器中包裹每個構造的宏。系統600 可以包括可以有助於安全性的與安全有關的欄位(未示出),例如包括可以使用宏的其他用戶的名稱以及他們可以執行操作的範圍(例如,發送電子郵件、更新電子表格等)。這樣的基於能力的安全性可以通過在授權執行代碼時考慮用戶的意圖來提供益處。在這樣的系統中,並且舉例而言,執行用戶創建稱為能力的如下對象,這些對象封裝用戶希望允許的每個操作,並且用戶向將執行的非信任代碼傳遞這些對象。這些對象在非信任代碼由系統執行時變成淨荷(payload)的一部分(例如,包裹器的一部分),並且不可由非信任代碼修改或者創建。當非信任代碼嘗試訪問底層可信資源(例如,常規地為文件系統等)時,它僅可以經由用戶創建的包裹可信資源的對象來這樣做。能力可以允許對將向非信任代碼授予的訪問的細粒度控制並且可以用來構造服從最少特權原理的執行環境。這意味著任何給定模塊可以僅執行為了它能夠執行它的功能而必需的最小動作集,而無更多動作。已經描述關於基於宏的託管系統的示例系統和過程,以下段落描述用於運用此類系統和過程的如下一系列示例,這些示例中的許多示例討論系統可以如何使用基於能力的安全性來處置這些情況中的每個情況,以及如何減輕如下一些風險,這些風險可能是此類示例的一部分。例1:銷售策略實施考慮如下場景,在該場景中,用於組織的銷售部門在電子表格中創建用於潛在客戶的提議。電子表格包含公司生產的所有產品和特徵的成本。在銷售員遍歷電子表格時, 他或者她可以在特徵旁邊的列中用1或者0將特徵標記為活躍或者不活躍(即當前可用於銷售)。電子表格可以包含用於計算定價的公式(包括各種折扣和價格乘數)。在(例如,包括可能互斥的一些特徵)的行項目之間可以存在多個依賴性。這些規則可以表達為宏。備選地,可以按照規則語言表達如下規則,這些規則將編譯成如下宏, 這些宏附著到表格以實施規則。附加規則可以包括錯誤校驗和其他一致性校驗。此外還可以存在與基於地區或者其他因素的促銷或者觸發事件相關聯的規則。CN 102549560 A
關於此類規則考慮的一個事項是將如何管理它們。例如,讓宏和/或規則駐留於表格引用的共享庫中可能是有幫助的,從而使得管理員可以容易更新表格中的值。宏也應當是系統管理員向各種小型企業所有者提供的工具套件的一部分,並且可以允許那些用戶中的每個用戶訪問和執行宏。管理員可以保持從託管系統上的中心位置上傳的宏,並且用戶都可以從該位置執行宏。因此,可以在共享模式中公布宏,而單個「時隙」用於每個訪問宏的電子表格。另一用戶可以通過在他們的電子表格中包括指向宏的URL來向他們的電子表格中導入宏,並且可以向它授予用於向該電子表格寫入的權限。例2 投資用戶界面考慮如下場景,在該場景中,投資公司在電子表格中具有定價模型並且想要從外部服務拉取股票報價並且將它們注入到電子表格中以生成推薦(例如,買入、持有等)腳本可能需要從電子表格讀取和向電子表格寫入,以及訪問外部股票報價服務。 作者可以向腳本授予如下腳本訪問權,該訪問權使腳本僅限於具體股票報價服務。如果作者將使該時隙留空,則應當向調用服務的用戶不僅詢問是否向腳本授予用於聯絡服務的權限,而且詢問將聯絡哪個具體服務。這樣,用戶可以約束腳本可以完成的操作;腳本將不能聯絡任何其他服務。如果用戶想要與其他用戶共享這一個宏以用於包含在他們自己的電子表格中 (例如,複製宏而不是引用它),則其他用戶將需要他們自己的用於訪問外部股票報價服務的權限。如果用戶通過讓其他用戶指向在中心位置的宏來共享它,則用戶即使他們本身沒有用於聯絡外部股票報價服務的權限,也仍然可以能夠使用宏。可以在這樣的情形中向他們授予腳本本身具有的權限(儘管他們可能不能從他們自己的腳本訪問服務)。例3:事故報告考慮如下場景,在該場景中,公共汽車運輸公司對自動化它的事故報告感興趣。捲入事故的駕駛員可以訪問託管服務以填寫電子表格中的記錄諸如公共汽車的位置等信息的表單。宏可以用來向各種監督者傳送報告以供他們審核。宏可能需要標識監督者(例如,經由它有權訪問的另一電子表格、資料庫查詢等)、生成法律部門的正確電子郵件地址,以及與那些人共享文檔,以及發送電子郵件,並且訪問其他電子表格(例如,如下電子表格,該電子表格包括哪些事故報告未決的記錄)。可能的是那些人將需要進一步編輯電子表格,繼而觸發使宏進展的事件。宏可以在繼續模式中運行,從而使得它每當特定用戶已經解決宏的階段時暫停,並且繼而等待下一用戶挑選它。當由事件喚醒時,它可以進行校驗以查看誰已經對文檔籤核(例如,如在文檔本身中記錄或者在向宏發送的事件中的信息中記錄的那樣),並且可以等待直至需要籤核的每個人已經這樣做,在這一點,宏繼而可以通知某一其他人並且記錄已經完全處理了事故(例如, 在又一電子表格中)。在一些實現方式中,如果兩個事件同時到達,則它們可以被排入隊列, 因而宏一次僅處理一個繼續。工作流程狀態可以簡單地保持在宏的局部變量上下文中以及部分地記錄在電子表格中。在有關場景中,可以查詢尚未完全處理和完結(例如,基於工作流程)的事故報告。這一查詢可能需要訪問如下電子表格,該電子表格包含關於事故報告的狀態信息(或者簡單地打開電子表格)。
例4 公共汽車時間表報告考慮如下場景,在該場景中,公共汽車運輸公司想要能夠向客戶通知某些公共汽車線路上的延遲。公司可以編輯電子表格以更新它們的公共汽車的預計時間/位置,並且這樣的編輯諸如可以通過如下宏自動發生,該宏接收關於公共汽車的位置數據並且基於這樣的信息計算估計到達時間(例如,通過將公共汽車標識為離開車站X,並且添加時間Y以計算到達車站X+1的時間)。在電子表格中的宏可以標識某些公汽線路何時異常延遲,並且如果是這樣,則它可以向已經籤約參加通知的客戶發送文本消息。例如,用戶可以預訂無論用戶何時在市區並且在他的正常汽車車站的兩個街區內而且用戶的任何路線公共汽車 (例如,692路、698路等公共汽車)很可能晚點多於五分鐘到達該街角都接收文本消息。用戶的行動裝置上的應用可以在用戶處於適當位置時觸發,以便使託管服務激活用戶的記錄上的標誌,從而使得用戶接收涉及用戶的當前位置的更新,而用戶無需人工錄入位置(例如,通過將用戶的GPS坐標轉換成最近公汽車站位置)。出於安全目的,宏的作者可以授予用於向用戶的有限集合(例如,在由管理員控制的另一電子表格中列舉的用戶)發送文本消息的能力,並且很可能公布這一個宏為僅在表格本地而不是公共可訪問的。作者不會向宏授予向表格寫入的能力。這一場景帶來通過參考在文檔或者其他匯集(例如,電子表格或者某一其他分組定義)中定義的分組來指定能力的廣度這樣的可能性。例5 基於位置的事件觸發考慮如下場景,在該場景中,一個用戶更新電子表格中的一組音樂會推薦(包括, 每場音樂會的地址和日期/時間)。其他用戶可以通過要求無論他們何時在這些音樂會之一的附近並且音樂會的時間迫近都被通報來預訂來自這一電子表格的通知。在這一情況下的通知可以例如使用諸如映射服務、社交網絡服務(用於標識做出推薦的用戶的好友)、位置服務(用於標識好友何時處於特定位置)以及用於發送通知的文本消息發送服務此類服務。因此,託管宏尤其適合於在這樣的場景中。例6:調查考慮如下場景,在該場景中,用戶創建調查或者其他數據錄入表單、向多個其他用戶發送電子郵件表單,並且向電子表格添加如下行,該行表明每個用戶如何填寫表單。應當向宏授予用於從某個地址向由用戶提供的一組地址發送電子郵件給一組人的能力。宏可以諸如通過訪問來自託管服務的用戶標識特徵或者通過標識響應中的用戶 ID(例如,電子郵件地址)來追蹤從每個用戶接收表單中的數據。宏繼而可以訪問電子表格、向電子表格的一列中錄入用戶ID,並且向電子表格的其他列中錄入一個或者多個用戶答案。以這一方式,第一用戶可以向(例如,如從現有好友列表或者電子郵件列表確定的) 分組快速發送表單並且將來自該分組的評論自動列表。例7:購置訂單準許考慮如下場景,在該場景中,用戶發起購置訂單(例如,「我想要X千盒Q-tip並且我比較喜歡銷售商XYZ」)。當用戶提交購置訂單(PO)時,宏可以基於諸如項目、總價、部門等數據確定需要誰準許Po。例如,如果總價大於固定閾值,則PO可能需要主管準許。當準許者準許PO時,它可以沿著工作流程(諸如在宏、資料庫或者電子表格中定義的用戶列表) 移動;宏將保持本地狀態以記住誰已經批准PO以及誰尚未準許PO ;當所有準許者都已經準許時,向購置發送Po。這個宏可以在繼續方面最好地運行。宏將有能力利用指向如下文檔的連結或者附件向某些用戶發送電子郵件,該文檔具有如下表單或者URL,那些用戶可以點擊這些表單或者URL以準許或者不準許給定購置訂單,宏將有權訪問具有諸如部門主管等信息的其他電子表格或者資料庫。例8:郵件合併考慮如下場景,在該場景中,用戶具有名稱、地址、電子郵件地址等的名稱電子表格,以及另一文檔(例如,電子郵件、電子表格等)並且想要用來自列表的欄位替換後一個文檔中的欄位,並且向名稱電子表格中指定的收件人用電子郵件發送合併的文檔。為了安全性,這是可以完全在具體文檔和名稱列表的上下文內運行的宏。能力是 「允許向如在這一表格的第一列中指定的列表發送電子郵件」以及訪問模板文檔。宏本身利用根據電子表格行和一些模板計算的數據向列表中的個人發送電子郵件。用於郵件合併宏的特定形式眾所周知。例9:醫生輪班調度考慮如下場景,在該場景中,多個醫生訪問相同電子表格並且編輯它。宏可以校驗電子表格以保證每個醫生遵循用於電子表格的格式化或者調度規則(例如,在時間段中的最多或者最少輪班次數)。每個用戶可以能夠點擊按鈕以運行宏,從而對電子表格與日曆應用進行同步,以求例如更直觀訪問(例如,用於創建重複時間表)。也可以出現雙向同步。宏可以被擴展成能夠與多種其他日曆應用交互。宏也可以有助於醫生驗證他們遵循規則,以有助於他們保持對他們已經報名了多少次輪班的追蹤,並且對電子表格與日曆應用進行同步。例10:電子郵件插件用戶可以定義宏以標識到達他們的帳戶的傳入郵件的每個實例,以及使電子郵件的發件人標識和主題行從電子郵件複製到與用戶的帳戶相關聯的電子表格的下一打開行中。以這一方式,用戶可以自動保持對到達他們的帳戶的傳入郵件的最新日誌。例11 博客插件在服務上的作為博主的用戶可以開發用於處置用戶對博客的評論的宏。例如,可以使用關於評論者的信息,以諸如在評論旁邊示出評論者的位置(例如,使用與來自用戶的評論對應的IP位址)。此外,用戶可以讓所有評論與觸發文字(諸如褻瀆)的黑名單比較,從而使得無論何時發表包含不當文字的評論,用戶都接收文本消息告警。用戶繼而可以登錄博客以清除它。例12 可記帳小時作為顧問的用戶可以在日曆應用中追蹤他的或者她的可記帳小時。他們可以使用宏以定期(例如,每周或者每月)解析出此類條目(例如,通過識別形式為X.X的時間錄入)。宏繼而可以使用與條目相關聯的文本以標識時間應當被記帳的項目編號(例如,如下列表,該列表將關鍵詞和客戶名稱與某些相異項目相關)並且繼而可以向電子表格中的單元添加數據以執行記帳操作。宏繼而可以(在將每小時費率用於記帳之後)將來自電子表格的值合併成由文字處理程序生成的發票,並且繼而可以向客戶用電子郵件發送所得文檔。如果客戶是託管系統的註冊用戶,則宏可以產生針對付款的直接請求額(包括經由如下表單,該表單包括如下可選機制,客戶端可以使用該機制來表明為帳單付款的意圖),並且客戶可以隨後選擇控制項以讓資金從客戶帳戶向顧問帳戶轉帳。例13 行車路線郵件合併託管系統的用戶可能希望向他的或者她的多個好友發送針對即將到來的聚會的邀請。用戶因此可以預備用於聚會邀請的電子表格。用戶繼而可以將宏指向好友及其地址的列表(例如,在託管系統上的聯繫人應用中)以實際上執行將郵件合併成邀請。然而,用戶也可以向如下映射服務供應他們自己的地址(聚會的位置)以及當前正預備其邀請的好友的來自列表的地址,該映射服務可以根據標準API返回示出如下地圖的圖像,該地圖讓在好友的住宅與聚會之間的行車路線疊加在地圖上。宏可以向邀請中併入圖像,該邀請繼而可以與自動和定製生成的路線一起發送到好友。圖7示出了可以與這裡描述的技術一起使用的通用計算機設備700和通用移動計算機設備750的示例。計算設備700旨在於代表各種形式的數字計算機(諸如膝上型計算機、臺式計算機、工作站、個人數字助理、伺服器、刀片伺服器、主機和其他適當計算機)。計算設備750旨在於代表各種形式的行動裝置(諸如個人數字助理、蜂窩電話、智慧型電話和其他類似的計算設備)。這裡所示部件、它們的連接和關係及其功能僅意味著舉例,而並不意味著限制在本文獻中描述和/或要求保護的本發明的實現方式。計算設備700包括處理器702、存儲器704、存儲設備706、連接到存儲器704和高速擴展埠 710的高速接口 708,以及連接到低速總線714和存儲設備706的低速接口 712。 部件702、704、706、708、710和712中的每個部件使用各種總線來互連,並且可以裝配在共同主板上或者如視情況以其他方式來裝配。處理器702可以處理用於在計算設備700內執行的指令(包括存儲在存儲器704中或者存儲設備706上的用於在外部輸入/輸出設備 (諸如耦合到高速接口 708的顯示器716)上顯示用於⑶I的圖形信息的指令)。在其他實現方式中,可以視情況使用多個處理器和/或多個總線以及多個存儲器和存儲器類型。也可以連接多個計算設備700,而每個設備提供所需操作的部分(例如,作為伺服器組、刀片伺服器組或者多處理器系統)。存儲器704存儲計算設備700內的信息。在一個實現方式中,存儲器704是一個或者多個易失性存儲器單元。在另一實現方式中,存儲器704是一個或者多個非易失性存儲器單元。存儲器704也可以是另一形式的計算機可讀介質(諸如磁碟或者光碟)。存儲設備706能夠提供用於計算設備700的海量存儲。在一個實現方式中,存儲設備706可以是或者包含計算機可讀介質(諸如軟盤設備、硬碟設備、光碟設備或者帶設備、快閃記憶體或者其他類似的固態存儲器設備或者設備陣列(包括存儲區域網絡或者其他配置中的設備))。電腦程式產品可以有形地體現在信息載體中。電腦程式產品也可以包含在執行時執行一種或者多種方法(諸如上文描述的方法)的指令。信息載體是計算機或者機器可讀介質(諸如存儲器704、存儲設備706、處理器702上的存儲器或者傳播的信號)。高速控制器708管理用於計算設備700的帶寬密集操作,而低速控制器712管理更低帶寬密集操作。這樣的功能分配僅為示例性的。在一個實現方式中,高速控制器708 耦合到存儲器704、顯示器716(例如,通過圖形處理器或者加速器)以及可以接受各種擴展卡(未示出)的高速擴展埠 710。在該實現方式中,低速控制器712耦合到存儲設備706 和低速擴展埠 714。可以包括各種通信埠(例如,USB、藍牙、乙太網、無線乙太網)的低速擴展埠可以例如通過網絡適配器耦合到一個或者多個輸入/輸出設備(諸如鍵盤、 指點設備、掃描儀或者聯網設備(諸如交換機或者路由器))。如圖中所示,可以用諸多不同形式實施計算設備700。例如,它可以實施為標準伺服器720,或者多次實施於一組此類伺服器中。它也可以實施為機架伺服器系統7M的一部分。此外,它還可以實施於個人計算機(諸如膝上型計算機722)中。備選地,來自計算設備700的部件可以與行動裝置(未示出)(諸如設備750)中的其他部件組合。每個此類設備可以包含計算設備700、750中的一個或者多個計算設備,並且整個系統可以由相互通信的多個計算設備700、750組成。計算設備750包括處理器752、存儲器764、輸入/輸出設備(諸如顯示器754)、通信接口 766和收發器768以及其他部件。設備750也可以具有用於提供附加存儲的存儲設備(諸如微驅動或者其他設備)。使用各種總線來互連部件750、752、764、754、766和768 中的每個部件,並且這些部件中的若干部件可以裝配在共同主板上或者視情況以其他方式來裝配。處理器752可以執行計算設備750內的指令(包括存儲在存儲器764中的指令)。 處理器可以實施為如下晶片的晶片組,這些晶片包括單獨以及多個模擬和數字處理器。處理器可以例如為了協調設備750的其他部件而提供諸如對用戶接口、設備750運行的應用和設備750的無線通信的控制。處理器752可以通過控制接口 758和耦合到顯示器754的顯示器接口 756來與用戶通信。顯示器7M可以例如是TFT IXD(薄膜電晶體液晶顯示器)或者OLED(有機發光二極體)顯示器或者其他適當顯示器技術。顯示器接口 756可以包括用於驅動顯示器754 以向用戶呈現圖形和其他信息的適當電路。控制接口 758可以從用戶接收命令並且轉換它們以用於向處理器752提交。此外,外部接口 762可以提供為與處理器752通信,以便支持設備750與其他設備的近區域通信。外部接口 762可以例如在一些實現方式中提供有線通信或者在其他實現方式中提供無線通信,並且也可以使用多個接口。存儲器764存儲計算設備750內的信息。存儲器764可以實施為一個或者多個計算機可讀介質、一個或者多個易失性存儲器單元或者一個或者多個非易失性存儲器單元中的一項或者多項。也可以提供擴展存儲器774並且通過可以例如包括SIMM (單輸入線存儲器模塊)卡接口的擴展接口 772連接到設備750。這樣的擴展存儲器774可以提供用於設備750的額外存儲空間,或者也可以存儲用於設備750的應用或者其他信息。具體而言,擴展儲存器774可以包括用於實現或者補充上文描述的過程的指令,並且也可以包括安全信息。因此,例如,可以提供擴展儲存器774作為用於設備750的安全模塊,並且可以用允許安全使用設備750的指令對擴展存儲器774編程。此外可以經由SMM卡以及附加信息(諸如以黑客不可攻擊的方式將標識信息放置於SIMM卡上)提供安全應用。如下文討論的那樣,存儲器可以例如包括快閃記憶體和/或NVRAM存儲器。在一種實現方式中,電腦程式產品有形地體現在信息載體中。電腦程式產品包含在執行時執行一種或者多種方法(諸如上文描述的方法)的指令。信息載體是計算機或者機器可讀介質(諸如存儲器764、擴展存儲器774、處理器752上的存儲器或者可以例如通過收發器768或者外部接口 762接收的傳播信號)。設備750可以通過在必需時可以包括數位訊號處理電路的通信接口 766進行無線通信。通信接口 766可以提供在各種模式或者協議(諸如GSM語音呼叫、SMS、EMS或者匪S消息發送、CDMA、TDMA, PDC、WCDMA, CDMA2000或者GPRS以及其他模式或者協議)之下的通信。這樣的通信可以例如通過射頻收發器768發生。此外還可以發生近程通信(諸如使用藍牙、WiFi或者其他這樣的收發器(未示出))。此外,GPS(全球定位系統)接收器模塊770可以向設備750提供與導航和位置有關的附加無線數據,該數據可以視情況由在設備750上運行的應用使用。設備750也可以使用音頻編碼解碼器760來可聽地通信,該編碼解碼器可以從用戶接收口頭信息並且將它轉換成可用數字信息。音頻編碼解碼器760可以類似地諸如通過例如設備750的頭戴式受話器中的揚聲器生成用於用戶的可聽聲音。這樣的聲音可以包括來自語音電話呼叫的聲音、可以包括記錄的聲音(例如,語音消息、音樂文件等)並且也可以包括由在設備750上操作的應用生成的聲音。如圖中所示,可以用多種不同形式實施計算設備750。例如,它可以實施為蜂窩電話780。它也可以實施為智慧型電話782、個人數字助理或者其他類似行動裝置的一部分。設備750也可以包括能夠感測運動的一個或者多個不同設備。示例包括但不限於加速度計和羅盤。加速度計和羅盤或者能夠檢測運動或者位置的其他設備可從任何數目的銷售商獲得並且可以用多種方式感測運動。例如,加速度計可以檢測加速度改變而羅盤可以檢測相對於磁北極或者南極的定向改變。這些運動改變可以由設備750檢測並且用來根據這裡描述的過程和技術更新相應設備750的顯示。這裡描述的系統和技術的各種實現方式可以實現在數字電子電路、集成電路、專門設計的ASIC(專用集成電路)、計算機硬體、固件、軟體和/或其組合中。這些各種實現方式可以包括一個或者多個如下電腦程式中的實現方式,該電腦程式在如下可編程系統上可執行和/或可解譯,該可編程系統包括可以專用或者通用的至少一個可編程處理器 (該處理器被耦合成從存儲系統接收數據和指令並且向存儲系統發送數據和指令)、至少一個輸入設備和至少一個輸出設備。這些電腦程式(也稱為程序、軟體、軟體應用或者代碼)包括用於可編程處理器的機器指令,並且可以用高級過程和/或面向對象的程式語言和/或用彙編/機器語言來實施。如這裡使用的那樣,術語「機器可讀介質」、「計算機可讀介質」是指用來向可編程處理器提供機器指令和/或數據的任何電腦程式產品、裝置和/或設備(例如,磁碟、光碟、 儲存器、可編程邏輯器件(PLD))(包括接收機器指令作為機器可讀信號的機器可讀介質)。 術語「機器可讀信號」是指用來向可編程處理器提供機器指令和/或數據的任何信號。為了提供與用戶的交互,這裡描述的系統和技術可以實施於如下計算機上,該計算機具有用於向用戶顯示信息的顯示設備(例如CRT(陰極射線管)或者IXD(液晶顯示器)監視器)以及用戶可以用來向計算機提供輸入的鍵盤和指示設備(例如滑鼠或者追蹤球)。其他種類的設備也可以用來提供與用戶的交互;例如向用戶提供的反饋可以是任何形式的感官反饋(例如視覺反饋、聽覺反饋或者觸覺反饋);並且可以用任何形式(包括聽覺、話音或者觸覺輸入)接收來自用戶的輸入。這裡描述的系統和技術可以實施於如下計算系統中,該計算系統包括後端部件 (例如作為數據伺服器)或者包括中間件部件(例如應用伺服器)或者包括前端部件(例如具有如下圖形用戶界面或者web瀏覽器的客戶端計算機,用戶可以通過該圖形用戶界面或者web瀏覽器來與這裡描述的系統和技術的實現方式交互)或者這樣的後端、中間件或者前端部件的任何組合。可以通過任何數字數據通信形式或者介質(例如通信網絡)互連繫統的部件。通信網絡的示例包括區域網(「LAN」)、廣域網(「WAN」)和網際網路。計算系統可以包括客戶端和伺服器。客戶端和伺服器一般相互遠離並且通常通過通信網絡交互。客戶端和伺服器的關係藉助如下電腦程式而產生,這些電腦程式在相應計算機上運行並且相互具有客戶端-伺服器關係。已經描述多個實施方式。然而將理解可以進行各種修改而未脫離本發明的精神實質和範圍。例如已經參照特定類型的宏描述本文獻的大量內容,但是也可以解決其他形式的宏以及宏執行和記錄方式。此外,圖中所示邏輯流程無需所示特定順序或者依次順序以實現所需結果。此外還可以提供其他步驟或者可以從描述的流程去除步驟並且可以向描述的系統添加或者從該系統去除其他部件。因而其他實施方式在所附權利要求的範圍內。
權利要求
1.一種管理計算機宏的計算機實現的方法,包括在網際網路可訪問的託管計算機系統中的位置存儲用於宏的代碼;從在與所述託管計算機遠離的客戶端計算機上運行的應用接收對執行所述宏的請求;在所述託管計算機系統上執行所述宏;以及向在所述客戶端計算機上運行的所述應用提供執行所述宏的結果,其中與所述宏被編程為對其操作的文件分開存儲和訪問用於所述宏的所述代碼。
2.根據權利要求1所述的方法,還包括將所述宏與所述託管計算機系統的註冊用戶相關聯,以及根據由所述註冊用戶標識的訪問限制使所述宏可用於所述託管計算機系統的其他用戶。
3.根據權利要求2所述的方法,其中所述訪問限制由所述託管計算機系統將所述註冊用戶分配到的一個或者多個分組進行定義。
4.根據權利要求1所述的方法,還包括從在與所述託管計算機遠離的多個不同客戶端計算機上運行的多個應用接收對執行所述宏的請求,從所述位置針對每個所述請求在所述託管計算機系統上自動執行所述宏,以及響應於執行所述宏向所述多個應用中的每個相應應用提供執行所述宏的結果。
5.根據權利要求4所述的方法,其中所述多個應用對應於單個帳戶持有者。
6.根據權利要求4所述的方法,其中所述多個應用對應於多個不同帳戶持有者。
7.根據權利要求1所述的方法,其中執行所述宏包括對由所述託管計算機系統提供的多個不同託管服務進行調用。
8.根據權利要求7所述的方法,其中執行所述宏包括對由獨立於所述託管計算機系統的第三方信息提供者提供的web服務進行調用。
9.根據權利要求1所述的方法,還包括將由在所述託管計算機系統上運行的第一應用生成的信息轉譯成不同格式,以及向在所述託管計算機系統上運行的第二應用提供所述經轉譯的信息。
10.根據權利要求1所述的方法,還包括向針對向所述託管計算機系統註冊的多個不同用戶的多個不同帳戶提供執行所述宏的結果。
11.根據權利要求1所述的方法,其中響應於所述客戶端計算機上的瀏覽器加載具有指針的網頁來接收所述請求,所述指針指向所述託管計算機系統中的宏執行子系統上的 JavaScript 寵。
12.一種用於在託管計算機系統上執行宏的計算機實現的系統,包括多個託管應用,可從所述託管計算機系統進行操作;宏數據存儲庫,存儲多個宏,其中每個宏分配給所述託管計算機系統上的用戶帳戶並且每個宏定義將由所述多個託管應用中的至少一個託管應用執行的一系列動作,其中定義對所述多個宏的訪問以便標識用戶帳戶,所述系統將代表所述用戶帳戶執行所述多個宏中的每個宏;以及計算機伺服器,編程為運行腳本管理器,所述腳本管理器響應於執行請求來訪問宏並且通過從用戶帳戶有權訪問的一個或者多個網絡可訪問服務收集信息來執行所述宏。
13.根據權利要求12所述的系統,其中從代表除了將所述存儲的宏分配到的所述用戶帳戶之外的一個或者多個用戶帳戶操作的應用中可訪問所述宏。
14.根據權利要求12所述的系統,其中所述腳本管理器被編程為向標識為有權訪問所述宏中的每個特定宏的用戶帳戶有選擇地允許對所述宏的訪問。
15.根據權利要求12所述的系統,還包括由與所述託管計算機系統的運營商不同的組織運營的一個或者多個託管服務,每個託管服務響應於宏的調用可訪問以在執行所述宏期間向所述宏提供信息。
16.根據權利要求12所述的系統,還包括用於向所述託管計算機系統的用戶遞送的網頁代碼,包括用於調用所述多個宏之一併且用於使用通過執行所述宏來生成的結果的代碼。
17.根據權利要求12所述的系統,其中每個所述宏經由用於向所述數據存儲庫公布所述宏的用戶的帳戶的唯一用戶標識符分配給用戶帳戶。
18.根據權利要求12所述的系統,還包括包裹服務管理器,用於在所述宏代碼周圍提供安全包裹器以根據由所述用戶標識的訪問允許或者限制來控制對與所述用戶對應的資源的訪問。
19.根據權利要求18所述的系統,其中所述安全包裹器被布置成生成用於所述用戶的對話框,所述對話框被布置成在所述宏首次運行時從所述用戶接收與將向所述宏提供的訪問級別有關的輸入。
20.一種用於在託管計算機系統上執行宏的計算機實現的方法,包括多個託管應用,可從所述託管計算機系統進行操作;宏數據存儲庫,存儲多個宏,每個宏分配給所述託管計算機系統上的用戶帳戶並且每個宏定義將由所述多個託管應用中的至少一個託管應用執行的一系列動作;以及用於執行宏以實現所述多個託管應用的一個或者多個實例化中的改變的裝置。
全文摘要
公開一種管理計算機宏的計算機實現的方法。該方法包括在網際網路可訪問的託管計算機系統中的位置存儲用於宏的代碼;以及從在與該託管計算機遠離的客戶端計算機上運行的應用接收對執行該宏的請求。該方法還包括在該託管計算機系統上執行宏,並且向在該客戶端計算機上運行的該應用提供執行該宏的結果,其中與該宏被編程為對其操作的文件分開存儲和訪問用於該宏的該代碼。
文檔編號G06F17/00GK102549560SQ201080042062
公開日2012年7月4日 申請日期2010年8月13日 優先權日2009年8月13日
發明者M·W·哈姆 申請人:谷歌公司