SAP Build4-office 操作

1. 郵件操作

1.1 前期準備

商店中找到outlook的sdk,添加到build中
在這里插入圖片描述
在process中添加outlook的SDK
在這里插入圖片描述
在這里插入圖片描述
電腦上裝了outlook的郵箱并且已經登錄
在這里插入圖片描述
我用個人foxmail郵箱向outlook發了一封帶附件的銷售訂單郵件,就以此作為例子
在這里插入圖片描述

1.2 搜索郵件

搜索有兩層,第一層是按郵箱屬性搜索,第二層再按郵件屬性搜索
第一層郵箱屬性涉及的就是待搜索的郵箱賬號、郵箱內的文件夾類型(Inbox,Draft,Junk)、郵箱內文件夾名
對搜索到的結果可以根據收信時間和郵件標題做升序或降序排序
在這里插入圖片描述
第二層郵件屬性搜索就可以根據郵件的特征進行搜索
在這里插入圖片描述
郵件搜索標準datatype:https://help.sap.com/doc/e57d7b179db649e6b5f2d26d9894f9d9/Cloud/en-US/datatypes/emailSearchCriterion.html
在這里插入圖片描述
這里就按包含Files of Sales Order的標題的郵件進行搜索了
若需遍歷郵箱郵件則如下圖所示
在這里插入圖片描述

1.3 保存郵件附件

簡單來說就是在原本遍歷郵件的基礎上,加上保存附件的操作
下載前最好根據index去動態創建文件夾以區分不同的郵件,常規操作是在指定的文件夾目錄下,創建年月日文件夾,再創建索引文件夾,每次執行前將索引文件夾清空
在這里插入圖片描述
保存附件時填入剛才創建的文件夾即可,可以根據文件后綴過濾所需的文件類型
在這里插入圖片描述

1.4 讀取郵件+保存附件(代碼方式)

代碼也并不復雜

// 打開outlook 進程
irpa_outlook.application.openOutlook();// 搜索參數
var ls_searchCriteria = {searchCriterionList : [ { element: "subject", operand: "contains", value: "Files of Sales Order" }],folderType: "olFolderInbox"
};// 搜索郵件
irpa_outlook.email.search( ls_searchCriteria );// 檢查郵件是否存在,若存在則持續遍歷
var lv_index = 0;
while( irpa_outlook.email.context.isContextCurrentEmailExist() ){// log 標題irpa_core.core.log( irpa_outlook.email.emailItem.properties.getSubject() );// 創建文件夾irpa_core.fs.folder.create( "C:\\Users\\41078\\Desktop\\" + "銷售訂單" + lv_index );// 保存郵件irpa_outlook.email.emailItem.saveAllAttachments( "C:\\Users\\41078\\Desktop\\" + "銷售訂單" + lv_index );// 轉到下一封郵件irpa_outlook.email.context.getNext();lv_index += 1;}irpa_outlook.application.closeOutlook();

在這里插入圖片描述

1.5 參考文檔

irpa outlook sdk:
https://help.sap.com/doc/e57d7b179db649e6b5f2d26d9894f9d9/Cloud/en-US/SDKdocumentation.html
irpa中使用郵件:
https://developers.sap.com/tutorials/spa-extend-outlook-automation.html

2. Excel 操作

2.1 前期準備

在商店中找到excel的SDK,Add到Build中,但是一般excel的sdk是默認添加的
在這里插入圖片描述
在process中添加excel的SDK
在這里插入圖片描述
在這里插入圖片描述
預先準備一個excel文檔,存放在本地電腦上,作為待操作的excel數據源
在這里插入圖片描述

2.2 創建data type

需要一個data type來存放從excel中讀取到的數據
在這里插入圖片描述
在這里插入圖片描述
通過右上角的import excel file可以根據excel內容快速創建data type,結果如果type有異常的話還是需要手動微調一下
在這里插入圖片描述

2.3 讀取excel(傳統方式)

傳統方式和新方式區別不大,主要的點在讀取excel數據至變量中時,新方法操作起來更簡單,先從傳統方式開始
主要步驟如下:打開excel進程,打開目標excel,激活目標工作簿,計算行列范圍,讀取行列范圍,賦值給目標二維數組
在這里插入圖片描述

2.3.1 初始化變量

為方便測試,創建結構ty_excel_config用于存儲excel信息
在這里插入圖片描述
在這里插入圖片描述
同時創建結構為ty_data的lt_data用于存儲excel數據
在這里插入圖片描述

2.3.2 操作excel

依次打開excel進程,打開excel
在這里插入圖片描述
激活待使用的sheet頁,獲取使用的行和列,并放入ls_excel_config中存儲
在這里插入圖片描述
在這里插入圖片描述
根據計算得到的行列數,轉換為excel的行列,并用get values(Cells)獲取讀取的范圍
稍微要寫一點點代碼,用來將數字列轉換成字母列
入參數字列,出參字母列

/* 十進制轉二十六進制再轉char */
var col10 = col_count;
var col26 = "";// 依次除以26,直到十進制除完
while(col10 != 0){col26 = String.fromCharCode( ( col10 % 26 ) + 64 ) + col26; col10 = Math.floor( col10 / 26 );
}return col26;

在這里插入圖片描述

2.3.3 讀取excel結果至二維數組

把二維數組當成sap中的內表就好了
通過get values(cells)獲取范圍內的excel數據,最后會返回一個object的二維數組
在這里插入圖片描述

通過foreach遍歷行,再通過add item將行中的各元素賦值給輸出的結果
在這里插入圖片描述
最后要關閉excel工作簿和進程
測試結果正常
在這里插入圖片描述

2.4 讀取excel(新方式)

新方式的區別就在2.3.3這一步上面,可以將此節的步驟替換為2.3.3,兩者均可
將excel cloud link拖拽至原先foreach的位置
在這里插入圖片描述
在這里插入圖片描述
這種方式說實話sap還能再優化一下,前面的步驟都是為了定位正在使用的最后一個單元格,如果能把這個痛點解決那么使用此方法會更方便

2.5 讀取excel(代碼方式)

以上的兩種方式對于完全無經驗的開發者來說相對友好,但如果會js的話在看完sap的sdk之后個人感覺可以通過代碼方式來完成上述工作,相對來說簡單很多
process中引入了數據類型,按理來說應該在sdk中有對應的語法可以去使用數據類型,但是實際上無法在script中聲明之前創建過的數據類型,語法是typescript的,在script中編寫后編譯器也能識別其中的元素,但是控制臺檢查卻不通過
let ls_data: $.ty_data;

必須引入相關數據類型的變量,才可以通過$訪問到數據類型,但是控制臺報錯不給用,所以也沒啥用處
在這里插入圖片描述
在這里插入圖片描述

由于沒法在script中直接聲明要使用的變量,只能通過入參的方式來傳遞指定數據類型的變量
在這里插入圖片描述
然后參考sdk的文檔寫代碼就可以了

var ls_excel_config = is_excel_config;
var lt_data = it_data;
var ls_data = is_data;// 打開excel進程,不顯示,不報警告
irpa_excel.application.newExcelInstance( false , false );// 打開workbook
irpa_excel.workbook.openExistingWorkbook( ls_excel_config.path );// 激活sheet
irpa_excel.worksheet.activateWorksheet( ls_excel_config.sheet );// 獲取行列索引
ls_excel_config.row_count = irpa_excel.worksheet.range.getUsedRangeRow();
ls_excel_config.col_count = irpa_excel.worksheet.range.getUsedRangeColumn();// 列數字索引轉字母索引
// 依次除以26,直到十進制除完
var lv_col_count_char = "";
var lv_col10 = ls_excel_config.col_count;
var lv_col26 = "";
while(lv_col10 != 0){lv_col26 = String.fromCharCode( ( lv_col10 % 26 ) + 64 ) + lv_col26; lv_col10 = Math.floor( lv_col10 / 26 );
}lv_col_count_char = lv_col26;// 獲取range信息
var lt_object = irpa_excel.worksheet.getValues( "A2:" + lv_col_count_char + ls_excel_config.row_count );
irpa_core.core.log( lt_object );// any類型轉換為數組,再遍歷給數據類型ty_data
var la_object = [];
var la_el = [];
la_object = lt_object;
la_object.forEach( el => {la_el = el;ls_data.orderNumber = la_el[0];ls_data.orderAmount = la_el[1];ls_data.orderDate   = la_el[2];ls_data.shippingCountry = la_el[3];ls_data.expectedDeliveryDate = la_el[4];ls_data.orderStatus = la_el[5];irpa_core.list.addItem( lt_data, ls_data );
} );irpa_core.core.log( lt_data );// 關閉excel進程
irpa_excel.application.closeExcel( );return lt_data;

個人感覺用代碼的方式處理對程序員更友好一些,也不會因為流程過于冗長而導致可讀性變差,上述的代碼塊完整把之前的流程實現了,但實際的業務上可以分割成幾個小的function script以實現模塊化,視情況而定可能也需要混入一些活動(比如關于ui的操作,這部分靠活動更容易實現)

2.6 參考文檔

irpa excel SDK:
https://help.sap.com/doc/b8b5c9bbac3846a0a57aedab3f412880/Cloud/en-US/SDKdocumentation.html
irpa core SDK:
https://help.sap.com/doc/77f2293985d7420aabecc0c8d0647e46/Cloud/en-US/SDKdocumentation.html
在irpa中使用微軟產品:
https://developers.sap.com/group.spa-ms-office.html
https://developers.sap.com/tutorials/spa-create-excel-automation.html

3. Word操作

3.1 前期準備

使用word的自動化的場景比較少,如果要使用的話是一般是根據模板將數據插入到模板的指定位置,但是目前build的word包只支持根據bookmark插入文本,圖片表格類的復雜數據完全不支持
先準備一份簡單的word模板,如下圖所示,使用bookmark標記待插入數據的指定位置
在這里插入圖片描述

在store中添加word的sdk
在這里插入圖片描述
在流程中添加word的依賴
在這里插入圖片描述
在這里插入圖片描述

3.2 插入文本

總體的流程如下,關于word的所有活動其實就截圖這些,可以看到支持的操作并不多
先將模板copy為新文件,打開新文件,向各個bookmark處插入數據,保存并關閉word即可
在這里插入圖片描述
主要用到的就是set bookmark value,根據bookmark的位置插入數據
在這里插入圖片描述
還有一段在js中獲取當前日期的函數代碼

// 獲取yyyy-MM-dd格式數據var date = new Date();
var seperator1 = "-";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) month = "0" + month;if (strDate >= 0 && strDate <= 9) strDate = "0" + strDate;var currentdate = year + seperator1 + month + seperator1 + strDate;
return currentdate;

最后結果如下
在這里插入圖片描述

4. 資源下載

上述流程可從百度網盤下載
鏈接:https://pan.baidu.com/s/18csw1TNAIYnIkL7mU7UuRA?pwd=SEEL
提取碼:SEEL

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41729.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41729.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41729.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機視覺、目標檢測、視頻分析的過去和未來:目標檢測從入門到精通 ------ YOLOv8 到 多模態大模型處理視覺基礎任務

文章大綱 計算機視覺項目的關鍵步驟計算機視覺項目核心內容概述步驟1: 確定項目目標步驟2:數據收集和數據標注步驟3:數據增強和拆分數據集步驟4:模型訓練步驟5:模型評估和模型微調步驟6:模型測試步驟7:模型部署常見問題目標檢測入門什么是目標檢測目標檢測算法的分類一階…

CSS實現圖片裁剪居中(只截取剪裁圖片中間部分,圖片不變形)

1.第一種方式&#xff1a;&#xff08;直接給圖片設置&#xff1a;object-fit:cover;&#xff09; .imgbox{width: 100%;height:200px;overflow: hidden;position: relative;img{width: 100%;height: 100%; //圖片要設置高度display: block;position: absolute;left: 0;right…

OpenCV:解鎖計算機視覺的魔法鑰匙

OpenCV&#xff1a;解鎖計算機視覺的魔法鑰匙 在人工智能與圖像處理的世界里&#xff0c;OpenCV是一個響當當的名字。作為計算機視覺領域的瑞士軍刀&#xff0c;OpenCV以其豐富的功能庫、跨平臺的特性以及開源的便利性&#xff0c;成為了開發者手中不可或缺的工具。本文將深入…

基于Java+SpringMvc+Vue技術的在線學習交流平臺的設計與實現---60頁論文參考

博主介紹&#xff1a;碩士研究生&#xff0c;專注于Java技術領域開發與管理&#xff0c;以及畢業項目實戰? 從事基于java BS架構、CS架構、c/c 編程工作近16年&#xff0c;擁有近12年的管理工作經驗&#xff0c;擁有較豐富的技術架構思想、較扎實的技術功底和資深的項目管理經…

AI+若依框架(低代碼開發)

提前說明&#xff1a; 文章是實時更新&#xff0c;寫了就會更。 文章是黑馬視頻的筆記&#xff0c;如果要自己學可以點及下面的鏈接&#xff1a; https://www.bilibili.com/video/BV1pf421B71v/一、若依介紹 1.版本介紹 若依為滿足多樣化的開發需求&#xff0c;提供了多個版本…

基于jeecgboot-vue3的Flowable流程-集成仿釘釘流程(一)圖標svgicon的使用

因為這個項目license問題無法開源&#xff0c;更多技術支持與服務請加入我的知識星球。 1、lowflow這里使用了tsx的動態圖標&#xff0c;如下&#xff1a; import ./index.scss import type { CSSProperties, PropType } from vue import { computed, defineComponent, resolv…

MATLAB基礎應用精講-【數模應用】 嶺回歸(Ridge)(附MATLAB、python和R語言代碼實現)

目錄 前言 算法原理 數學模型 Ridge 回歸的估計量 Ridge 回歸與標準多元線性回歸的比較 3. Ridge 參數的選擇 算法步驟 SPSSPRO 1、作用 2、輸入輸出描述 3、案例示例 4、案例數據 5、案例操作 6、輸出結果分析 7、注意事項 8、模型理論 SPSSAU 嶺回歸分析案…

Java [ 進階 ] 深入理解 JVM

?探索Java基礎 深入理解 JVM? 深入理解 JVM&#xff1a;結構與垃圾回收機制 Java 虛擬機&#xff08;JVM&#xff09;是 Java 程序運行的核心&#xff0c;了解 JVM 的內部結構和垃圾回收機制對優化 Java 應用性能至關重要。本文將深入探討 JVM 的結構和垃圾回收機制&#…

支付寶沙箱對接(GO語言)

支付寶沙箱對接 1.1 官網1.2 秘鑰生成&#xff08;系統默認&#xff09;1.3 秘鑰生成&#xff08;軟件生成&#xff09;1.4 golan 安裝 SDK1.5 GoLand 代碼1.6 前端代碼 1.1 官網 沙箱官網: https://open.alipay.com/develop/sandbox/app 秘鑰用具下載&#xff1a; https://ope…

序列化、反序列化

java 提供了一種對象序列化的機制&#xff0c;該機制中&#xff0c;一個對象可以被表示為一個字節序列&#xff0c;該字節序列包括該對象的數據、有關對象的類型的信息和存儲在對象中數據的類型。 將序列化對象寫入文件之后&#xff0c;可以從文件中讀取出來&#xff0c;并且對…

Java并發編程-ThreadLocal深入解讀及案例實戰

文章目錄 概述原理使用場景示例最佳實踐內存泄漏風險阿里開源組件TransmittableThreadLocal原理和機制使用場景如何使用注意事項ThreadLocal在分布式存儲系統edits_log案例中的實踐1. 為什么使用`ThreadLocal`?2. 實踐案例2.1 緩存日志操作2.2 線程局部的編輯日志狀態3. 注意事…

在 Spring 中編寫單元測試

單元測試是軟件開發過程中不可或缺的一部分&#xff0c;它能有效地提高代碼質量&#xff0c;確保代碼功能的正確性。在 Spring 應用中&#xff0c;JUnit 和 Mockito 是常用的單元測試工具&#xff0c;而 Spring Test 提供了豐富的測試支持。本文將介紹如何在 Spring 中使用 JUn…

并行處理百萬個文件的解析和追加

處理和解析大量文件&#xff0c;尤其是百萬級別的文件&#xff0c;是一個復雜且資源密集的任務。為實現高效并行處理&#xff0c;可以使用Python中的多種并行和并發編程工具&#xff0c;比如multiprocessing、concurrent.futures模塊以及分布式計算框架如Dask和Apache Spark。這…

物聯網時代5G通信技術分析研究一、引言

一、引言 近幾年&#xff0c;移動網絡技術跟隨互聯網的不斷發展而改革和進步&#xff0c;給平民大眾的生活也帶來新的嘗試與影響。從2G網絡的出現&#xff0c;到逐步被社會民眾所了解的3G&#xff0c;再到被熟知的且正在服務于大家的4G網絡&#xff0c;移動網絡技術的發展速度令…

jQuery Mobile 安裝指南

jQuery Mobile 安裝指南 jQuery Mobile 是一個基于 jQuery 的移動設備友好的網頁開發框架,它允許開發者創建響應式網頁和應用程序。本指南將詳細介紹如何安裝 jQuery Mobile,并確保您的開發環境準備好進行移動網頁開發。 1. 環境準備 在開始安裝 jQuery Mobile 之前,請確…

Mysql系列-Binlog主從同步

原文鏈接&#xff1a;https://zhuanlan.zhihu.com/p/669450627 一、主從同步概述 mysql主從同步&#xff0c;即MySQL Replication,可以實現將數據從一臺數據庫服務器同步到多臺數據庫服務器。MySQL數據庫自帶主 從同步功能&#xff0c;經過配置&#xff0c;可以實現基于庫、表…

B端設計:任何不顧及用戶體驗的設計,都是在裝樣子,花架子

B端設計是指面向企業客戶的設計&#xff0c;通常涉及產品、服務或系統的界面和功能設計。與C端設計不同&#xff0c;B端設計更注重實用性和專業性&#xff0c;因為它直接影響企業的效率和利益。 在B端設計中&#xff0c;用戶體驗同樣至關重要。不顧及用戶體驗的設計只是空洞的表…

數據庫之索引(二)

目錄 一、如何判斷數據庫的索引是否生效 二、如何評估索引創建的是否合理 三、索引是否越多越好 四、如何處理數據庫索引失效 五、是否所有的字段都適合創建索引 一、如何判斷數據庫的索引是否生效 可以使用EXPLAIN語句查看索引是否正在使用。 例如&#xff0c;假設已經創…

70.Bug:使用list.sort(Comparator.Comping(User::getCreateTime).reverse())空指針異常

1.出錯原因&#xff1a;在xml中沒有做字段映射 報錯語句復現&#xff1a; List<User> listnew ArrayList<>()&#xff1b; xml中進行查詢數據&#xff0c;數據存放在list中........... //排序 list.sort(Comparator.Comping(User::getCreateTime).reverse())&…

經典的layui框架,還有人用嗎?令人惋惜。

自從layui官網宣布關閉之后&#xff0c;layui框架的用戶飛速下滑&#xff0c;以至于到現在貝格前端工場承接的項目中&#xff0c;鮮有要求使用layui框架的&#xff0c;那么個框架還有人用嗎&#xff1f; 一、layui沒落是不是jquery惹的禍 layui的沒落與jQuery無關。layui框架…