Chrome 如何使用Javascript和HTML以编程方式从Google云端硬盘下载文件?(不是Google云端硬盘API)

lg40wkob  于 2023-03-27  发布在  Go
关注(0)|答案(1)|浏览(258)

目标:

1.在我的Chrome浏览器中,打开此Public Google Drive Folder
1.然后运行一个javascript:

*选择Google Drive文件夹中的第一个文件
*下载
**注:**我不想使用GoogleDriveAPI。
步骤:
**1.**选择文件
**2.**下载文件,选择以下选项之一:

  • 单击页面 * 中的下载按钮(左上角-选择文件时出现)*
  • 展开文件选项菜单 (每个文件右上角的三个点),然后从下拉菜单中单击下载按钮
    什么是工作:

使用以下命令选择文件:

document.querySelector('div[jsname=LvFR7c]').click()

使用以下命令展开文件选项菜单:

document.getElementsByClassName("pc7nUb I5YcP Dk9rmd").click()

什么不工作:

从页面或文件选项菜单中单击下载按钮

结论:

我注意到Google Drive的HTML元素大多带有aria角色,如buttonmenu,&menuitem。其中一些元素具有jsaction属性。当通过代码单击这些元素时,其中一些元素的行为与使用鼠标单击时相同,而另一些则在通过代码单击时不做任何操作。所以我只是感到困惑,不知道下一步该尝试什么。
我觉得这是一个微不足道的任务,但这是我第一次使用Javascript和HTML,所以我肯定我可能会错过一些简单的东西。
会非常感激任何帮助。谢谢!

下载按钮HTML元素:

页面下载按钮HTML:

document.querySelector('div[aria-label=Download]')

“文件选项”菜单“下载”按钮HTML:

document.querySelectorAll('div[aria-label=Download]')[3]

*我在上面尝试过的东西 * 下载按钮HTML元素

element.click()
element.dispatchEvent(new Event('click'))
element.dispatchEvent(new Event('keydown')) // (with more options in the Event initializer)
element.dispatchEvent(new Event('keyup'))
element.focus()
element.setAttribute('aria-expanded', true)
element.setAttribute('aria-pressed', true)
element.ariaPressed = true
mwyxok5s

mwyxok5s1#

您可以尝试以下方法:

步骤:

1.查找图像的唯一ID

let imgDiv = document.querySelectorAll('c-wiz>div[data-id]');
var imgIds = [];
imgNodes.forEach(img => {
    let imgId = img.getAttribute('data-id');
    // console.log(imgId);
    imgIds.push(imgId);
});

1.使用fetch API如果你想显示为blob url,否则打开url在新标签如下

// imgIds[0] = 1-XLXQ04HZtNmPgC-zpYnQEDq3w5aPlDR
let downloadLink = `https://drive.google.com/uc?export=download&id=${imgIds[0]}`;
window.open(downloadLink, '_blank');

相关问题