我正在制作學生資訊模板,我想知道是否可以一次性列印每個學生的所有資料?我使用電子表格上的資料驗證來修改學生 ID,以便輕松查看和列印他們的資料。因為我必須為每個學生一張一張列印,這是一個耗時的程序,所以我想出了這種流程來節省時間。是否可以?
請參閱示例

uj5u.com熱心網友回復:
我相信你的目標如下。
- 您希望降低從電子表格列印資料的成本。
我認為當使用 Google Apps Script 列印電子表格時,Google Cloud Print可以實作這一點。但我想在這種情況下,設定可能有點復雜。因此,在這種情況下,我想提出一種解決方法。下面的流程呢?
- 從源作業表中檢索值并將輸出值創建為陣列。
- 創建一個新的電子表格并將每個值放在每個頁面上。
- 列印電子表格。
通過這個流程,您可以通過一個手動程序列印出所有頁面。
示例腳本如下。
示例腳本:
請將以下腳本復制并粘貼到 Google 電子表格的腳本編輯器中。并運行myFunction。
function myFunction() {
const rowHeader = ["STUD ID", "LAST NAME", "FIRST NAME", "MIDDLE NAME", "NAME EXTENSION"];
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DATA");
const [header, ...values] = sheet.getDataRange().getValues();
const ar = values.map(r => header.reduce((o, h, i) => Object.assign(o, { [h.toUpperCase()]: r[i] }), {}));
const newValues = ar.map(e => [rowHeader, ...[rowHeader.map(f => e[f])]]).map(e => e[0].map((_, c) => e.map(r => r[c])));
const ss = SpreadsheetApp.create("tempSpreadsheet");
newValues.forEach((v, i) => (i == 0 ? ss.getSheets()[0] : ss.insertSheet()).getRange(1, 1, v.length, v[0].length).setValues(v));
}
運行此腳本時,tempSpreadsheet會在根檔案夾中創建一個新的電子表格。當您打開它時,您可以看到每個作業表的預期值。這樣,您就可以將它們列印出來。
筆記:
- 此示例腳本是根據您的示例電子表格準備的。因此,當您的示例電子表格與您的實際情況不同時,此示例腳本可能無法使用。請注意這一點。
參考:
- 降低()
- 地圖()
- 創建(名稱)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/336717.html
