我在 Google AppsScript 中有一個函式可以復制當前作業表并粘貼到另一個檔案中:
function exportSheet() {
const exportSheetName = 'DF'; // Please set the target sheet name.
// 1. Copy the active Spreadsheet as a tempora Spreadsheet.
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet().copy('tmp');
// 2. Convert the formulas to the texts.
const targetRange = spreadsheet.getSheetByName(exportSheetName).getDataRange();
targetRange.copyTo(targetRange, {contentsOnly:true});
// 3. Delete the sheets except for a sheet you want to export.
spreadsheet.getSheets().forEach(sheet => {
if (exportSheetName != sheet.getName()) spreadsheet.deleteSheet(sheet)
});
// 4. Retrieve the blob from the export URL.
const id = spreadsheet.getId();
const xlsxBlob = UrlFetchApp.fetch(`https://docs.google.com/spreadsheets/export?id=${id}&exportFormat=xlsx`, {headers: {authorization: `Bearer ${ScriptApp.getOAuthToken()}`}}).getBlob();
// 5. Crete the blob as a file.
var folder = DriveApp.getFolderById("XXXXXXX");
var filename = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("N1").getValue() ".xlsx";
folder.createFile(xlsxBlob.setName(filename));
// 6. Delete the temporate Spreadsheet.
DriveApp.getFileById(id).setTrashed(true);
var folder = DriveApp.getFolderById("YYYYYYYYY");
var filename = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("N1").getValue() ".xlsx";
folder.createFile(xlsxBlob.setName(filename));
// 6. Delete the temporate Spreadsheet.
DriveApp.getFileById(id).setTrashed(true);
// 7. Save the whole Spreadsheet in repository
var folderId = "ZZZZZZZZZZ";
const spreadsheet2 = SpreadsheetApp.getActiveSpreadsheet();
var filename2 = spreadsheet2.getActiveSheet().getRange("N1").getValue();
var folder = DriveApp.getFolderById(folderId);
DriveApp.getFileById(spreadsheet2.getId()).makeCopy(filename2, folder);
}
但是,我想在開頭包含一個 if 陳述句,例如“IF B2!= 'Ok' 不要運行腳本并列印一些錯誤訊息”(我知道這聽起來是初學者,那是因為我確實是初學者)。什么是正確的合成器?我怎樣才能將我以前的函式放在 if 陳述句中并列印錯誤訊息?
uj5u.com熱心網友回復:
描述
只需在腳本開頭對單元格 B2 進行測驗即可。并顯示錯誤資訊。
腳本
function exportSheet() {
const exportSheetName = 'DF'; // Please set the target sheet name.
// 1. Copy the active Spreadsheet as a tempora Spreadsheet.
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
if( spreadsheet.getActiveSheet().getRange("B1").getValue() !== "Ok" ) {
SpreadsheetApp.getUi().alert("oops");
return;
}
else {
spreadsheet.copy("tmp");
}
// the rest of your code
}
參考
- https://developers.google.com/apps-script/reference/base/ui.html#alert(String)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/442371.html
