目標:您希望通過從 Google 電子表格的自定義選單執行腳本來將 CSV 資料上傳到活動作業表。
示例腳本:Google Apps 腳本端:Code.gs 請將以下腳本作為腳本復制并粘貼到腳本編輯器中。
function onOpen() {
SpreadsheetApp.getUi().createMenu("sample").addItem("import CSV", "importCsv").addToUi();
}
function importCsv(e){
if (!e) {
SpreadsheetApp.getUi().showModalDialog(HtmlService.createHtmlOutputFromFile("index"), "sample");
return;
}
const csv = Utilities.parseCsv(Utilities.newBlob(...e).getDataAsString());
const sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(sheet.getLastRow() 1, 1, csv.length, csv[0].length).setValues(csv);
}
HTML 和 Javascript 端:index.html 請將以下腳本作為 HTML 復制并粘貼到腳本編輯器中。
<form><input type="file" name="file" onchange="importCsv(this.parentNode)" accept=".csv,text/csv"></form>
<script>
function importCsv(e) {
const file = e.file.files[0];
const f = new FileReader();
f.onload = d => google.script.run.withSuccessHandler(google.script.host.close).importCsv([[...new Int8Array(d.target.result)], file.type, file.name]);
f.readAsArrayBuffer(file);
}
</script>
使用腳本,因為它是示例彈出視窗,當我單擊所需的自定義選單項時,我可以選擇檔案,但在選擇檔案后,我使用系統檔案瀏覽器我只是得到以下螢屏,無法知道是否上傳作業或正在進行中,但最終如果您等待足夠長的時間,彈出視窗會自行關閉,并且 csv 資訊會成功上傳。我只想讓彈出視窗顯示匯入進度的更多資訊

uj5u.com熱心網友回復:
作為一個簡單的示例,在您的情況下,如何進行以下修改?
修改后的腳本:
請按如下方式修改您的 HTML。
<form>
<input type="file" name="file" onchange="importCsv(this.parentNode)" accept=".csv,text/csv">
<div id="progress">Waiting</div>
</form>
<script>
function importCsv(e) {
const div = document.getElementById("progress");
div.innerHTML = "Uploading...";
const file = e.file.files[0];
const f = new FileReader();
f.onload = d => google.script.run.withSuccessHandler(_ => {
div.innerHTML = "Done";
setTimeout(google.script.host.close, 1000);
}).importCsv([[...new Int8Array(d.target.result)], file.type, file.name]);
f.readAsArrayBuffer(file);
}
</script>
在此修改中,選擇檔案時,
Waiting將更改為Uploading...。并且,檔案上傳完成后,Done會顯示 并關閉對話框。請根據您的情況修改文本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/435844.html
標籤:谷歌应用脚本
